在MySQL中使用LIKE命令会产生奇怪的结果

时间:2013-09-11 02:30:03

标签: mysql sql

我是MySQL新手,但在Intranet开发中使用Access多年。最近开始使用MySQL数据库并拔掉我的头发。 LIKE命令为存在的记录提供不稳定或无结果。

一个名为“Clients”的表,包含一个名为“BusinessName”的列。一个记录是例如“FRED SMITH CONSTRUCTIONS”。

Select * from Clients where BusinessName LIKE '%FRED%' -- returns true.
Select * from Clients where BusinessName LIKE '%FRED SMITH%' -- returns false!
Select * from Clients where BusinessName LIKE '%FRED%SMITH%' -- returns false!
Select * from Clients where BusinessName LIKE '%FRED%S%' -- returns true.
Select * from Clients where BusinessName LIKE '%FRED%SM%' -- returns false!
Select * from Clients where BusinessName LIKE '%FRED%S%C%' -- returns true.

它非常不稳定,对我来说毫无意义。任何超过1个单词,它会让人感到困惑。就像%通配符在单词之间不起作用,或者如果第二个单词中有多个字符。

为了让我摆脱困境,我正在分别搜索每个单词,但这显示了太多结果。例如

Select * from Clients where BusinessName LIKE '%FRED%' or BusinessName LIKE '%SMITH%' 

返回true。

有什么建议吗?列类型为Text。尝试RLIKE得到了类似的结果。

1 个答案:

答案 0 :(得分:0)

您的列字符集可能与您的预期不符。 MySQL安装经常默认为ISO8859-1以外的其他内容。