0

Permissions私はMySQLテーブルを持っています。それを数値列UserIdとで呼び出しましょうPrivilegeUserId列は10進値と見なされますがPrivilege、16進値であると想定されています。16進値は特権コードに適しています(すべての特権ビットがR、W、Xなどのフラグを担当するため)。これはINSERT、16進リテラルを使用するステートメントで広く使用されています。例:

INSERT INTO `Permissions` (`UserId`, `Privilege`) VALUES (12, 0x53);

3in0x53がエンコードされた特権アクションを表すフラグマスクであると仮定します。そのため、このようなINSERTステートメントを読んだ人は、このアクセス許可がR(1)およびW(2)アクセス許可を付与することを簡単に理解できます。ただし、たとえばネイティブMySQLクライアントでテーブルへのクエリPermissionsが実行されると、特権値は10進数で表示されます(想定してくださいSELECT * FROM)。

+--------+-----------+
| UserID | Privilege |
+--------+-----------+
|     12 |        83 |
+--------+-----------+

MySQLクライアントにデフォルトで16進ビューでいくつかの数値列を表示する(文字列として返さない)ように推奨する方法はありますか?おそらく、テーブルメタデータ、うーん、「推奨事項」のどこかにあるか、クライアント構成のどこかにある可能性があります。正直なところ、私にはわかりません。これが役立つもう1つの理由は、クエリを呼び出すたびに特定の列に関数を適用せずに、結果セットの列タイプを数値から文字列に変更するという単純なクエリを使用できる可能性があるためです。SELECT * FROMHEX()HEX()

何か案は?あなたの助けは本当にありがたいです。前もって感謝します。


PSこの質問をここで行うべきかどうかはわかりません。スーパーユーザーまたはデータベース管理者が適している場合は、移行してください。ありがとう!

4

1 に答える 1

1

VIEWはあなたが望むものになるようです。HEX(Permissions)をPermissionsとして指定してすべての列を選択し、テーブルの代わりにビューを使用するようにクライアントに指示するだけです。

http://dev.mysql.com/doc/refman/5.5/en/create-view.html

于 2012-09-18T11:43:25.623 に答える