案例
下面三条sqll输出一样吗?
select Cast('2022-07-29 09:58:02' AS Binary(19));
select Cast('2022-07-29 09:58:02' AS Binary);
select Cast('2022-07-29 09:58:02' AS Binary(1));
看结果
mysql> select Cast('2022-07-29 09:58:02' AS Binary(19));
+--------------------------------------------------------------------------------------+
| Cast('2022-07-29 09:58:02' AS Binary(19)) |
+--------------------------------------------------------------------------------------+
| 0x323032322D30372D32392030393A35383A3032 |
+--------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql> select Cast('2022-07-29 09:58:02' AS Binary);
+------------------------------------------------------------------------------+
| Cast('2022-07-29 09:58:02' AS Binary) |
+------------------------------------------------------------------------------+
| 0x323032322D30372D32392030393A35383A3032 |
+------------------------------------------------------------------------------+
1 row in set (0.07 sec)
mysql> select Cast('2022-07-29 09:58:02' AS Binary(1));
+------------------------------------------------------------------------------+
| Cast('2022-07-29 09:58:02' AS Binary(1)) |
+------------------------------------------------------------------------------+
| 2 |
+------------------------------------------------------------------------------+
1 row in set (0.07 sec)
1,2是一样的, 3不一样。
结论:
cast 转换成Binary类型是时 可以指定字符串长度。 超出部分会忽略掉。
下面语法也是支持的,binary是个函数
mysql> select Binary(1);
+----------------------+
| Binary(1) |
+----------------------+
| 0x31 |
+----------------------+
1 row in set (0.00 sec)