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 ' 结尾的空格没有被忽略。