如你所知,空格和空字符串是截然不同的。
但是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
1条答案
按热度按时间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排序规则的列表可以通过以下命令获得