我有一个 MySQL 表,我们将其称为Permissions
,其中包含数字列UserId
和Privilege
。 UserId
列被视为十进制值,但 Privilege
应该是十六进制值。十六进制值更适合特权代码(因为每个特权位都负责 R、W、X 等标志),这被我们广泛用于使用十六进制的 INSERT
语句文字,例如:
INSERT INTO `Permissions` (`UserId`, `Privilege`) VALUES (12, 0x53);
假设 0x53
中的 3
是代表编码权限操作的标志掩码,因此读取此类 INSERT
语句的人可以很容易理解,这个权限授予了R(1)和W(2)权限。但是当执行对Permissions
表的查询时,例如在 native MySQL客户端中,权限值显示为十进制(请假设SELECT * FROM
):
+--------+-----------+
| UserID | Privilege |
+--------+-----------+
| 12 | 83 |
+--------+-----------+
有没有办法推荐 MySQL 客户端默认在十六进制 View 中显示(不返回字符串)一些数字列?它可能位于表元数据中的某个位置,嗯,“建议”或客户端配置中的某个位置 - 老实说,我对此一无所知。这很有用的另一个原因是,可以使用简单的 SELECT * FROM 查询,而不是每次调用特定列时都应用 HEX()
函数。查询,其中 HEX()
甚至将结果集列类型从数字更改为字符串。
有什么想法吗?我们将非常感谢您的帮助。提前致谢。
<小时/>P.S.我不确定这个问题是否应该在这里问。如果更好的位置是 super 用户或数据库管理员,请迁移。谢谢!
最佳答案
看来 VIEW 就是您想要的。只需选择所有列,指定 HEX(Permissions) 作为 Permissions,然后告诉客户端使用 View 而不是表。
关于mysql - 为 MySQL 客户端的结果集输出中的数字列字段指定除 10 之外的默认基数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12474409/