简单的MySQL LIKE无法按预期工作

时间:2013-06-16 20:16:02

标签: mysql

我有一个关于图像的信息数据库。我需要允许用户搜索包含用户指定字符串的文件名。它不像它应该的那样工作。

例如,数据库包含27个名称以字母“b”开头的文件的记录。

如果我执行(在PHPMyAdmin中)查询:

SELECT * FROM image WHERE img_name LIKE '%b%';

我得到一个文件名包含字母'b'的记录列表(如预期的那样)。

但是,以“b”开头的文件的27条记录中只有4条出现在该列表中。

知道我缺少什么吗?

2 个答案:

答案 0 :(得分:0)

在我发布问题后,我发现了另一种可能性,结果证明是解决方案。

我进一步研究了数据库定义(我没有设计它),它使用varbinary(255)作为img_name。如果我将查询更改为:

SELECT * FROM `image` WHERE CONVERT(img_name USING latin1) LIKE '%b%'

我得到了我期望的所有记录。

答案 1 :(得分:0)

你说那些没有出现的是以'b'开头的那些。

这可能是一个案例问题。

将名称转换为小写,如此

SELECT * FROM image WHERE strtolower(img_name)LIKE'%b%';