[英]SQL - find exact match inside a string
我正在使用 mySql 数据库我有一个包含帐户层次结构列的表,该列中的值如下所示
/home/一级层次结构/二级层次结构/三级层次结构/
(有的只有一级,有的有3级)
我只想获取第一级层次结构项
我的 SQL 查询看起来像这样
SELECT Account.name FROM Account WHERE account_hierarchy like "/home/%/"
问题是我在回家后的所有级别都得到了结果,因为它们都以 / 结尾
SQL 有什么办法只获得第一级
我想你想要三个斜线。 你可以使用:
where hierarchy like '/home/%/' and
hierarchy not like '/home/%/%/'
在支持正则表达式的数据库中,有替代解决方案。
实际上,如果你只想要一个开始和结束的斜线,那么中间就没有斜线,周围有其他字符。 所以你可以使用:
where hierarchy not like '/home/%_/_%'
这假设所有内容都以'/home/'
开头。
在 MySQL 中,可以使用REGEXP_SUBSTR
例子:
SELECT regexp_substr('/a/b/c','[az]+',3)
,返回b
因为'b'是第二个'/'之后的部分。
您可能需要更改正则表达式'[az]+'
。 这仅匹配小写路径。 如果您还需要大写匹配,请将其更改为[a-zA-Z]+
。
正则表达式的所有其他可能性(在 MySQL 中)在此处进行了解释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.