我尝试通过正则表达式'\b<word>\b'
检查字符串是否存在特定单词,但似乎\b
锚点在REGEXP_SUBSTR中不起作用:
E.g。检查单词ABC
:
SELECT REGEXP_SUBSTR ('A, AB, ABC,ABCD', '\bABC\b') FROM DUAL;
但这里的结果是(null)。我做错了什么?
答案 0 :(得分:1)
要检查字符串是否包含给定单词,并且假设可以分隔字符串中两个单词的唯一字符是逗号和空格,您需要做的就是处理这两个字符,甚至考虑到字符串的开头和结尾:
SELECT 1 from dual
where REGEXP_LIKE ('A, AB, ABC,ABCD', '(^| |,)ABC(,|$| )')
工作原理:
(^| |,)
表示单词可以前面没有任何内容(字符串的开头),逗号或空格;
类似地(,|$| )
表示该单词后面可以跟逗号,没有(字符串的结尾)或空格