为什么SQL不匹配任何东西?

时间:2013-10-07 11:42:20

标签: mysql sql database

我在MySQL数据库上运行查询

SELECT * FROM t_college WHERE NAME="CEPT University"

即使CEPT University列中存在条目name,也找不到匹配项。

对于数据库中的每个其他多字varchar条目都是如此。如果要匹配的值是xyz之类的单个字,则会找到匹配项,但不能查找多字词。

6 个答案:

答案 0 :(得分:2)

您的数据中除了空格字符外,您显然有一些空格字符(制表符,换行符等)。

通常最好的方法来清理它。要帮助调试问题,请使用HEX()

select HEX(name)
from t_college

这会将每个字符显示为00FF范围内的两个十六进制字符。

您应该能够弄清楚不需要的字符是什么,以及何时删除它们时用空格替换它们。

答案 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', '')

希望它有所帮助。