0

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

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

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

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

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

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

知道我错过了什么吗?

4

2 回答 2

0

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

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

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

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

于 2013-06-16T20:35:21.097 回答
0

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

这可能是一个案例问题。

像这样将名称转换为小写

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

于 2013-06-16T22:24:20.680 回答