我有一个包含很多路径的数据库,我需要找到所有只有 2 层的路径,不多也不少。 例如,我需要一个查询来查找匹配以下结构的字符串:
folder/folder/file.ext
但不是:
folder/file.ext
而不是 folder/folder/folder/file.ext
或任何更长的内容
我的猜测是使用 REGEX 并匹配恰好有 2 个斜杠 /
的字符串,但我不知道如何制定表达式,例如:
SELECT `name` FROM `table` WHERE `name` REGEXP '????'
在我的例子中,我需要找到 2 个斜杠并且非常具体,但理想情况下,这个答案对于任何寻找 3 或 X 数量的斜杠或字符串上重复的任何其他字符的人都有用。
最佳答案
最简单的方法是使用like
:
where name like '%/%/%' and
name not like '%/%/%/%'
将此作为正则表达式执行很棘手。但这是另一种方法:
where length(name) - length(replace(name, '/', '')) = 2
作为正则表达式:
where name regexp '^([^/]*[/]){2}[^/]*$'
所以这是可能的,尽管可能不那么容易理解。
关于mysql - 如何在 MySQL 中匹配恰好有 2 个斜杠的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38860454/