我有一个关于图像的信息数据库。我需要允许用户搜索包含用户指定字符串的文件名。它不像它应该的那样工作。
例如,数据库包含27个名称以字母“b”开头的文件的记录。
如果我执行(在PHPMyAdmin中)查询:
SELECT * FROM image WHERE img_name LIKE '%b%';
我得到一个文件名包含字母'b'的记录列表(如预期的那样)。
但是,以“b”开头的文件的27条记录中只有4条出现在该列表中。
知道我缺少什么吗?
答案 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%';