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