将列的默认显示设置为十六进制格式

时间:2018-01-06 14:38:09

标签: mysql sql formatting hex mariadb

我正在寻找创建MySQL列的方法,其中SELECT语句将自动显示格式为十六进制的任何值:

1  -> 0x1
16 -> 0x10

这是一个基本实现此结果的示例,但问题是此数据的任何用户都必须进行处理(http://sqlfiddle.com/#!9/3bc633/2):

创建数据:

CREATE TABLE t1 (
  c1 int
);

INSERT INTO t1 (c1) VALUES
  (0x1),
  (0x10);

选择数据:

SELECT c1, CONCAT('0x', HEX(c1))
FROM t1;

我想在列或表上设置一个属性,用简单的SELECT c1来实现这个结果。

1 个答案:

答案 0 :(得分:0)

CREATE TABLE t1 (
  c1 int,
  c2 varchar(32) GENERATED ALWAYS AS (CONCAT('0x', HEX(c1)))
);

MariaDB [test]> INSERT INTO t1 (c1) VALUES
    ->   (0x1),
    ->   (0x10);
Query OK, 2 rows affected (0.14 sec)
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [test]> select * from t1;
+------+------+
| c1   | c2   |
+------+------+
|    1 | 0x1  |
|   16 | 0x10 |
+------+------+
2 rows in set (0.00 sec)

或者,如果您使用旧版本,则可能是

CREATE TABLE t1 (
  c1 int,
  c2 varchar(32) AS (CONCAT('0x', HEX(c1))) VIRTUAL
);

但同样的原则适用。