mysql选择文件名的子串

时间:2011-05-10 22:28:11

标签: mysql substring

我正在进行自动填充,以查看与表单中输入的搜索参数匹配的查找文件。如果有人支持“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 . '%"

但它没有用。我可以在表格中创建一个新列来存储扩展名称,但必须有更好的方法!

由于

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

假设您的所有文件名只有一个点(没有像my.file.pdf这样的文件名),您可以使用substring_index:

SELECT SUBSTRING_INDEX(link_text,'.',1) AS fname
FROM tblProfile
WHERE fname like "%'. $text . '%"

虽然这可能很慢,但请考虑以下选项之一:

  1. 将没有扩展名的文件名存储在单独的列中并对其编制索引(为您带来性能提升!)

  2. 将您的查询修改为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以获得更好的解释。