mysql - 为 MySQL 客户端的结果集输出中的数字列字段指定除 10 之外的默认基数?

标签 mysql

我有一个 MySQL 表,我们将其称为Permissions,其中包含数字列UserIdPrivilegeUserId 列被视为十进制值,但 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 而不是表。

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

关于mysql - 为 MySQL 客户端的结果集输出中的数字列字段指定除 10 之外的默认基数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12474409/

相关文章:

php - 我的 PHP 代码在语法上有问题吗?提交后页面变为空白

python - Sqlalchemy、zope 事务和 .user 属性

php - 在 SQL 注入(inject)中使用嵌套 SQL 子查询

php - SQL : Get value of a column during update

MySql 完整索引搜索不起作用

mysql - 如何将 2 个查询作为单个查询同时运行

mysql - 查询3张表接收数据

php - mysql删除datetime与系统时间最接近的数据

php - 在 PHP 中存储时间

php - 如何限制特定数组键打印的字符数