繁体   English   中英

SQL - 在字符串中查找完全匹配

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM