Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何匹配MySQL中正好有两个斜杠的字符串_Mysql_Sql_Regex - Fatal编程技术网

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

如何匹配MySQL中正好有两个斜杠的字符串,mysql,sql,regex,Mysql,Sql,Regex,我有一个包含很多路径的数据库,我需要找到所有只有两个级别的路径,而不是更多或更少。 例如,我需要一个查询来查找与以下结构匹配的字符串: folder/folder/file.ext 但不是: folder/file.ext而不是folder/folder/folder/file.ext或任何更长的 我的猜测是使用正则表达式和匹配字符串,这些字符串正好有两个斜杠/,但我不知道如何表达表达式,比如: SELECT `name` FROM `table` WHERE `name` REGEXP '?

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

folder/folder/file.ext
但不是:

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

我的猜测是使用正则表达式和匹配字符串,这些字符串正好有两个斜杠
/
,但我不知道如何表达表达式,比如:

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

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

最简单的方法使用
类似的

where name like '%/%/%' and
      name not like '%/%/%/%'
作为正则表达式执行此操作很棘手。但这里有另一种方法:

where length(name) - length(replace(name, '/', '')) = 2
作为正则表达式:

where name regexp '^([^/]*[/]){2}[^/]*$'

因此这是可能的,尽管可能不那么容易检查。

最简单的方法使用
类似的

where name like '%/%/%' and
      name not like '%/%/%/%'
WHERE LENGTH(name) = 2 +
      LENGTH(REPLACE(name, '/', ''))
作为正则表达式执行此操作很棘手。但这里有另一种方法:

where length(name) - length(replace(name, '/', '')) = 2
作为正则表达式:

where name regexp '^([^/]*[/]){2}[^/]*$'

所以这是可能的,尽管可能不那么容易检查。

那么
/folder/file.txt
呢?它有两个斜杠,但只有一个斜杠,或者你永远不会有前导斜杠?也许,在这种情况下,我会寻找三个斜杠。那么
/folder/file.txt
呢?有两个斜杠,但只有一个方向,或者你永远不会有前导斜杠?也许,在这种情况下,我会寻找3个斜杠。
WHERE LENGTH(name) = 2 +
      LENGTH(REPLACE(name, '/', ''))