mysql - 在 MySQL 中使用 LIKE 命令给出奇怪的结果

标签 mysql sql

我是 MySQL 的新手,但在内网开发中使用 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%' 

返回真。

有什么建议吗?列类型是文本。尝试了 RLIKE 并得到了相似的结果。

最佳答案

您的列字符集可能不是您所期望的。 MySQL 安装经常默认为 ISO8859-1 以外的东西。

关于mysql - 在 MySQL 中使用 LIKE 命令给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18731973/

相关文章:

mysql - UTF-8字符有问题;我看到的不是我存储的

mysql - 由于循环引用,如何在迁移到 google cloud sql 时禁用外键检查

mysql - Windows 8.1 Wampserver Mysql 无法运行

mysql - 将 MYD 文件导入 MySQL 数据库

mysql - MySQL 中何时使用单引号、双引号和反引号

mysql - 从 tmp 数据库中的表插入和更新到另一个数据库中的表

php - 如何在此循环中跳过空结果或错误?

mysql - 我需要查询将表中的每个项目与其他所有项目配对,但仅一次

sql - 随着时间的推移,一系列选择(使用分组依据)、删除+插入和稳定的解释计划正在变慢

SQL 错误 : Tablespace does not exist