1

我在 MySQL 数据库上运行查询

SELECT * FROM t_college WHERE NAME="CEPT University"

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

这对于数据库中的每个其他多词varchar条目都是相同的。如果要匹配的值是单个单词 like xyz,它会找到一个匹配项,但不会找到多个单词的匹配项。

4

6 回答 6

2

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

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

select HEX(name)
from t_college

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

您应该能够弄清楚不需要的字符是什么,以及何时通过将它们替换为空白来删除它们。

于 2013-10-07T12:04:36.760 回答
1

因此,也许可以尝试更新此列以用修剪过的值替换您的当前值 - 使用 TRIM() 函数删除尾随和前导空格,然后尝试进行此 SELECT。

于 2013-10-07T12:00:22.507 回答
1

试试下面Query

SELECT * FROM t_college WHERE NAME like '%CEPT University%'
于 2013-10-07T12:03:20.627 回答
1

有时,当您认为应该从查询中获得结果时,您可以发出比相等更严格的查询和/或使用带有 like/rlike 的正则表达式。

SELECT * FROM t_college WHERE NAME like "%CEPT%University%"

如果这返回一个结果,您就知道您的数据没有按照您指定的格式完全格式化。

于 2013-10-07T12:04:11.667 回答
1

这背后的原因可能是字符串“CEPT University”可能已经存储了不需要的字符或以大写或小写形式存储,并且与您尝试查找的不完全一样。例如,您可以使用函数 UPPER('CEPT University') 来搜索它。

于 2013-10-07T12:19:11.090 回答
0

感谢您的回复。我终于使用查询删除了特殊字符:

UPDATE t_college SET NAME=REPLACE(REPLACE(NAME, '\n', ''), '\r', '').

希望它可以帮助某人。

于 2013-10-07T12:08:24.630 回答