为什么在mariadb中空格和空字符串是一样的?

0yg35tkg  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(159)

如你所知,空格和空字符串是截然不同的。
但是mariadb在以下代码中返回true

SET @whitespace = '   '
SET @emptyStr = '';
SELECT @whitespace, @emptyStr; # '   ', ''
SELECT @whitespace = @emptyStr; # 1
SELECT LENGTH(@whitespace), LENGTH(@emptyStr); # 3, 0

我想知道在mariadb处理比较句法的标准。
这是不同的对象在Python一样..

whitespace = '   '
emptyStr = ''
print(whitespace, emptyStr) # '   ', ''
print(whitespace == emptyStr) # Flase
print(len(whitespace), len(emptyStr)); # 3, 0
uqjltbpv

uqjltbpv1#

默认情况下,MariaDB(但也包括MySQL)使用PAD排序规则,这意味着将忽略尾随空格,NOPAD排序规则是在MariaDB 10.2中引入的。
如果需要与尾随空格进行比较,可以选择以下选项:

*使用NOPAD归类

select("1 " COLLATE "utf8mb3_nopad_bin") = "1";

*使用LIKE运算符

select "1 " like "1";

*转换为BINARY

select BINARY "1 " = "1";
可用的nopad排序规则的列表可以通过以下命令获得

show collation like '%nopad%';

相关问题