通过 Oracle REGEXP_SUBSTR 检查字符串中是否存在单词

Check for a presence of word in string by Oracle REGEXP_SUBSTR

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

例如检查单词 ABC:

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

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

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

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

工作原理:

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

类似地(,|$| )表示单词后面可以跟一个逗号,什么都没有(字符串的结尾)或者一个space