通过Oracle REGEXP_SUBSTR

时间:2017-05-31 09:19:18

标签: regex oracle regexp-substr

我尝试通过正则表达式'\b<word>\b'检查字符串是否存在特定单词,但似乎\b锚点在REGEXP_SUBSTR中不起作用:

E.g。检查单词ABC

SELECT  REGEXP_SUBSTR ('A, AB, ABC,ABCD', '\bABC\b') FROM DUAL;

但这里的结果是(null)。我做错了什么?

1 个答案:

答案 0 :(得分:1)

要检查字符串是否包含给定单词,并且假设可以分隔字符串中两个单词的唯一字符是逗号和空格,您需要做的就是处理这两个字符,甚至考虑到字符串的开头和结尾:

SELECT 1 from dual
where REGEXP_LIKE ('A, AB, ABC,ABCD', '(^| |,)ABC(,|$| )')

工作原理:

(^| |,)表示单词可以前面没有任何内容(字符串的开头),逗号或空格;

类似地(,|$| )表示该单词后面可以跟逗号,没有(字符串的结尾)或空格