我正在进行自动填充,以查看与表单中输入的搜索参数匹配的查找文件。如果有人支持“p”,则返回所有pdf文件,这是我不想要的。我只希望他们搜索文件的名称。这是我的询问......
SELECT uid, link_text
FROM tblProfile
WHERE link_text LIKE "%'. $text . '%"
ORDER BY link_text
LIMIT 8
我试着做...
SELECT SUBSTRING(link_text,-4,4)
FROM tblProfile
WHERE SUBSTRING(link_text,-4,4) like "%'. $text . '%"
但它没有用。我可以在表格中创建一个新列来存储扩展名称,但必须有更好的方法!
由于
答案 0 :(得分:4)
尝试使用SUBSTRING_INDEX()。
示例:http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_substring-index
答案 1 :(得分:1)
假设您的所有文件名只有一个点(没有像my.file.pdf这样的文件名),您可以使用substring_index:
SELECT SUBSTRING_INDEX(link_text,'.',1) AS fname
FROM tblProfile
WHERE fname like "%'. $text . '%"
虽然这可能很慢,但请考虑以下选项之一:
将没有扩展名的文件名存储在单独的列中并对其编制索引(为您带来性能提升!)
将您的查询修改为WHERE link_text LIKE "' . $text . '%"
,以便从文件名的开头开始。
答案 2 :(得分:0)
如果你想要除扩展名之外的文件名部分(例如只有abc.pdf中的'abc'),你可以搜索'。'同样,直接获取其索引并对SUBSTR(filename, 0, <position of '.'> - 1)
请参阅http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_substring-index以获得更好的解释。