我试图用字母数字的“短代码”列来搜索记录。类似于:
SELECT * FROM items WHERE short_code = "1AV9"
由于没有排序规则且列类型设置为varchar(),此查询不区分大小写,因此它返回短代码为1av9、1av9等的记录。我不希望这样。
因此,我尝试将short_code列的排序规则更改为
utf8_bin
,但现在查询根本没有返回任何内容。但是,如果我将查询更改为:SELECT * FROM items WHERE short_code LIKE "1AV9%"
然后我得到我想要的那一排。是否有可能通过转换列的排序规则,它以某种方式在我的所有缺点的末尾附加了不可见的字符?如何验证/修复此问题?
编辑:通过将列类型更改为
binary
并尝试其他方法,它以某种方式用空字节填充了我所有的短代码,这解释了为什么查询不会返回任何结果。重新开始并设置utf8_bin
排序规则后,一切都按预期工作。 最佳答案
尝试
SELECT LENGTH(short_code) FROM items WHERE short_code LIKE "1AV9%"
看看结果是否不是4。
编辑:嗯,您的值可能有尾随空格。尝试
SELECT * FROM items WHERE short_code = "1AV9 "
(这是
1AV9
加上四个空格)看看是否有结果。