位值
位值以前缀 b /B 和 0b /0B 开始,以 0 和 1 组成的二进制数字。
以下为合法的位值:
b'11'
B'11'
0b11
0B11
以下为不合法的位值:
b'3'(3 不是二进制数字)
默认情况下,位值是二进制字符串:
SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A | binary |
+------------+---------------------+
1 row in set (0.000 sec)
SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a | binary |
+-----------+--------------------+
1 row in set (0.000 sec)
seekdb 会将位值视为整数。为确保位值不会按照数字被处理,可以添加 0 或使用 CAST(... AS UNSIGNED)。 默认情况下,分配给用户自定义变量的位值是二进制字符串。
SET @v1 = b'1100001';
Query OK, 0 rows affected (0.000 sec)
SET @v2 = b'1100001'+0;
Query OK, 0 rows affected (0.000 sec)
SET @v3 = CAST(b'1100001' AS UNSIGNED);
Query OK, 0 rows affected (0.000 sec)
SELECT @v1, @v2, @v3;
+------+------+------+
| @v1 | @v2 | @v3 |
+------+------+------+
| a | 97 | 97 |
+------+------+------+
1 row in set (0.001 sec)