我的MySQL数据库中有一个存储文件路径的列。我试图找出一个查询,它将返回文件路径中的下一个文件夹给定一个字符串(或根目录,给定没有字符串)。所以说我有以下内容:
/this/is/my/folder
/this/is/another/folder
/folder/one
我的查询会返回'this'和'folder'。或者如果我给它字符串'/ this / is /',它将返回'my'和'another'。这可能在同一个查询中是不可能的,所以如果我需要两个查询,我可以添加代码逻辑。
我相信我可以用mysql中的正则表达式做到这一点,但我不确定在mysql中是否还有其他方法可以做到这一点?
感谢。
答案 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上查看。