我在MySQL数据库中有一堆路径(5.7.17-0ubuntu0.16.04.2)并且用户选择了一些路径,我想选择所有这些路径和下面的路径,但我已经遇到了一个问题。
假设用户想要“/ root / K”我需要选择:
a. /root/K%
b. /root/K
如何让REGEXP与字段的结尾或/?
匹配我尝试了以下内容:
原始查询:
where path REGEXP ('/root/K/|/root/J/J/') # this works but doesn't show the items in that path, only ones below
where path REGEXP '/root/K[/\z]' # does the same as above
where path REGEXP '/root/K(?=/|$)' # Get error 1139, repetition-operator invalid
我也尝试过:Regex to match _ or end of string但这会产生错误1139
还有其他建议吗?
答案 0 :(得分:1)
不支持lookarounds,而不支持MySQL正则表达式中的\z
锚点。您可以使用正常的捕获组:
WHERE path REGEXP '/root/K(/|$)'
匹配
/root/K
- 文字字符序列(/|$)
- /
或结束。