我在MySQL数据库上运行查询
SELECT * FROM t_college WHERE NAME="CEPT University"
即使CEPT University
列中存在条目name
,也找不到匹配项。
对于数据库中的每个其他多字varchar
条目都是如此。如果要匹配的值是xyz
之类的单个字,则会找到匹配项,但不能查找多字词。
答案 0 :(得分:2)
您的数据中除了空格字符外,您显然有一些空格字符(制表符,换行符等)。
通常最好的方法来清理它。要帮助调试问题,请使用HEX()
:
select HEX(name)
from t_college
这会将每个字符显示为00
到FF
范围内的两个十六进制字符。
您应该能够弄清楚不需要的字符是什么,以及何时删除它们时用空格替换它们。
答案 1 :(得分:1)
因此,可能尝试更新此列以使用已修剪的值替换当前值 - 使用TRIM()函数删除尾随和前导空格,然后尝试进行此SELECT。
答案 2 :(得分:1)
尝试以下Query
SELECT * FROM t_college WHERE NAME like '%CEPT University%'
答案 3 :(得分:1)
有时当您认为应该从查询中获取结果时,您可以发出不等于查询的查询和/或使用类似/ rlike的正则表达式。
SELECT * FROM t_college WHERE NAME,例如“%CEPT%University%”
如果这返回结果,您就知道您的数据格式不是您指定的格式。
答案 4 :(得分:1)
这背后的原因可能是字符串'CEPT University'可能存储了不需要的字符,或者是大写或小写,而不是您想要查找的字符串。例如,您可以使用UPPER('CEPT大学')功能进行搜索。
答案 5 :(得分:0)
感谢您的回复。我最后使用查询删除了特殊字符:
UPDATE t_college SET NAME=REPLACE(REPLACE(NAME, '\n', ''), '\r', '')
。
希望它有所帮助。