我有一个包含很多路径的数据库,我需要找到只有2个级别的所有路径,而不是更多。 例如,我需要一个查找匹配以下结构的字符串的查询:
folder/folder/file.ext
但不是:
folder/file.ext
而不是folder/folder/folder/file.ext
或更长的
我的猜测是使用REGEX并匹配精确地有两个斜杠/
的字符串,但我不知道如何制定表达式,如:
SELECT `name` FROM `table` WHERE `name` REGEXP '????'
在我的情况下,我需要找到2个斜杠并且非常具体,但理想情况下,这个答案对于寻找3或X个斜杠或任何其他字符重复的人来说非常有用。
答案 0 :(得分:6)
最简单的方法是使用like
:
where name like '%/%/%' and
name not like '%/%/%/%'
将此作为正则表达式是很棘手的。但这是另一种方法:
where length(name) - length(replace(name, '/', '')) = 2
作为正则表达式:
where name regexp '^([^/]*[/]){2}[^/]*$'
所以它有可能,虽然可能不那么可怜。
答案 1 :(得分:0)
WHERE LENGTH(name) = 2 +
LENGTH(REPLACE(name, '/', ''))