MySQL BINARY 操作符
在 MySQL 中, BINARY
操作符将一个字符串转为二进制字符串。二进制字符串使用 binary 字符集和 binary 排序规则。 BINARY
操作符常用在对字符串进行逐字节比较而不是逐字符比较。
BINARY
语法
这里是 MySQL BINARY
操作符的语法:
BINARY expr
BINARY expr
等同于 CONVERT(expr, BINARY)
和 CAST(expr AS BINARY)
函数。
参数
expr
- 必需的。 一个需要转为二进制的值或者表达式。
返回值
MySQL BINARY
返回由参数转为的二进制字符串。
如果您没有为 BINARY
提供参数,MySQL 将返回一个错误。
BINARY
示例
基本用法
本示例展示了如何使用 BINARY
操作符将 'Hello'
转为二进制字符串
SELECT BINARY 'Hello';
+--------------------------------+
| BINARY 'Hello' |
+--------------------------------+
| 0x48656C6C6F |
+--------------------------------+
注意, 在 mysql client 中,二进制字符串默认以十六进制的形式打印出来。
比较字符串
BINARY
操作符经常用在字符串比较中。
SELECT 'hello' = 'HELLO';
+-------------------+
| 'hello' = 'HELLO' |
+-------------------+
| 1 |
+-------------------+
这里,由于使用的字符集和排序规则,比较字符串的时候是不区分大小写的,因此 'hello' = 'HELLO'
返回了 1
。
如果我们想要按照区分大小写比较字符串,可以使用 BINARY
将字符串转为二进制后按字节进行比较。如下:
SELECT BINARY 'hello' = 'HELLO';
+--------------------------+
| BINARY 'hello' = 'HELLO' |
+--------------------------+
| 0 |
+--------------------------+
结果是显而易见的。
BINARY
操作符也会导致字符串结尾的空格在比较重变得重要。请看下面的例子:
SELECT 'a' = 'a ', BINARY 'a' = 'a ';
+------------+-------------------+
| 'a' = 'a ' | BINARY 'a' = 'a ' |
+------------+-------------------+
| 1 | 0 |
+------------+-------------------+
这里,
'a' = 'a '
返回了1
,它说明在比较中'a '
结尾的空格被忽略了。BINARY 'a' = 'a '
返回了0
,它说明在比较中'a '
结尾的空格没有被忽略。