如何匹配MySQL中具有正好2个斜杠的字符串

时间:2016-08-09 21:07:58

标签: mysql sql regex

我有一个包含很多路径的数据库,我需要找到只有2个级别的所有路径,而不是更多。 例如,我需要一个查找匹配以下结构的字符串的查询:

folder/folder/file.ext

但不是:

folder/file.ext而不是folder/folder/folder/file.ext或更长的

我的猜测是使用REGEX并匹配精确地有两个斜杠/的字符串,但我不知道如何制定表达式,如:

SELECT `name` FROM `table` WHERE `name` REGEXP '????'

在我的情况下,我需要找到2个斜杠并且非常具体,但理想情况下,这个答案对于寻找3或X个斜杠或任何其他字符重复的人来说非常有用。

2 个答案:

答案 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, '/', ''))