MariaDB BINARY 运算符使用指南
在 MariaDB 中,BINARY
是一个内置的运算符,它将给定的字符串转换为一个二进制字符串。
在比较二进制字符串时,MariaDB 将逐个字节而不是逐个字符比较。字符串两端的空格也会参与比较。
MariaDB BINARY
语法
这里是 MariaDB BINARY
函数的语法:
BINARY str
操作数
str
- 将被转为二进制字符串的普通字符串。
MariaDB BINARY
示例
基本示例
下面的语句展示了如何使用 MariaDB BINARY
运算符将普通字符串转为二进制字符串:
SELECT BINARY 'Hello';
输出:
+----------------+
| BINARY 'Hello' |
+----------------+
| Hello |
+----------------+
这个示例并不能说明太多的问题。
比较 - 尾随空格
比较普通字符串时, MariaDB 会忽略掉字符串尾随的空格:
SELECT
'Hello' = 'Hello',
'Hello' = 'Hello ';
输出:
+-------------------+--------------------+
| 'Hello' = 'Hello' | 'Hello' = 'Hello ' |
+-------------------+--------------------+
| 1 | 1 |
+-------------------+--------------------+
这里, 'Hello' = 'Hello '
返回 1,这是因为 MariaDB 忽略了 'Hello '
尾随的空格。
如果您认为尾随的空格很重要,想要得到一个不同的结果,请使用 BINARY
运算符:
SELECT
'Hello' = 'Hello ',
BINARY 'Hello' = 'Hello ',
'Hello' = BINARY 'Hello '\G
输出:
'Hello' = 'Hello ': 1
BINARY 'Hello' = 'Hello ': 0
'Hello' = BINARY 'Hello ': 0
或者
SELECT BINARY 'Hello' = BINARY 'Hello ';
输出:
+----------------------------------+
| BINARY 'Hello' = BINARY 'Hello ' |
+----------------------------------+
| 0 |
+----------------------------------+
比较 - 区分大小写
如果您使用了一个不区分大小的排序规则(比如:utf8_general_ci
),MariaDB 在比较字符串时会忽略大小写。 而二进制字符串则会强制区分大小写。
首先,通过以下语句查看当前的排序规则:
SELECT @@collation_connection;
输出:
+------------------------+
| @@collation_connection |
+------------------------+
| utf8mb4_general_ci |
+------------------------+
注意: ci
结尾表示不区分大小写。
此时, MariaDB 认为 'hello'
和 'Hello'
是相同的:
SELECT 'hello' = 'Hello';
输出:
+-------------------+
| 'hello' = 'Hello' |
+-------------------+
| 1 |
+-------------------+
如果你需要在比较时区分大小写,请使用 BINARY
操作符,如下:
SELECT
BINARY 'hello' = 'Hello',
'hello' = BINARY 'Hello',
BINARY 'hello' = BINARY 'Hello'\G
输出:
BINARY 'hello' = 'Hello': 0
'hello' = BINARY 'Hello': 0
BINARY 'hello' = BINARY 'Hello': 0
结论
在 MariaDB 中,BINARY
是一个内置的运算符,它将给定的字符串转换为一个二进制字符串。