查询文件路径的各个部分

时间:2012-07-03 19:02:48

标签: mysql sql

我的MySQL数据库中有一个存储文件路径的列。我试图找出一个查询,它将返回文件路径中的下一个文件夹给定一个字符串(或根目录,给定没有字符串)。所以说我有以下内容:

/this/is/my/folder
/this/is/another/folder
/folder/one

我的查询会返回'this'和'folder'。或者如果我给它字符串'/ this / is /',它将返回'my'和'another'。这可能在同一个查询中是不可能的,所以如果我需要两个查询,我可以添加代码逻辑。

我相信我可以用mysql中的正则表达式做到这一点,但我不确定在mysql中是否还有其他方法可以做到这一点?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用MySQL的SUBSTRING_INDEX()函数来提取所需的部分:

SELECT DISTINCT SUBSTRING_INDEX(
         SUBSTRING_INDEX(
           Folder,
           @querystring,
           1 + CHAR_LENGTH(@querystring) - CHAR_LENGTH(
             REPLACE(@querystring, '/', '')
           )
         ),
         '/',
         -1
       )
FROM   mytable
WHERE  Folder LIKE CONCAT(@querystring, '%');

sqlfiddle上查看。