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