0

我有一个 MySQL 表,我们称之为Permissions,带有数字列UserIdPrivilege. 该UserId列被认为是十进制值,但Privilege应该是十六进制值。十六进制值更适合特权代码(因为每个特权位都负责 R、W、X 等标志),这被我们广泛用于INSERT使用十六进制文字的语句,例如:

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

让我们假设3in0x53是代表编码特权操作的标志掩码,因此阅读此类INSERT语句的人可以很容易地理解此权限授予 R(1) 和 W(2) 权限。但是当Permissions执行对表的查询时,例如在本地 MySQL 客户端中,权限值显示为十进制(请假设SELECT * FROM):

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

有没有办法推荐 MySQL 客户端默认在十六进制视图中显示(不作为字符串返回)一些数字列?它可能位于表元数据、嗯、“建议”或客户端配置中的某处——老实说,我对此一无所知。这很有用的另一个原因是,可以使用简单查询,而不是每次调用查询时对某个列应用函数,甚至将结果集列类型从数字更改为字符串。SELECT * FROMHEX()HEX()

有任何想法吗?您的帮助将不胜感激。提前致谢。


PS我不确定这个问题是否应该在这里问。如果更好的地方是超级用户或数据库管理员,请迁移。谢谢!

4

1 回答 1

1

看来 VIEW 就是你想要的。只需选择所有列,将 HEX(Permissions) 指定为权限,并告诉客户端使用视图而不是表。

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

于 2012-09-18T11:43:25.623 回答