Проверьте наличие слова в строке с помощью Oracle REGEXP_SUBSTR
Я пытался проверить строку на наличие определенного слова по регулярному выражению '\b<word>\b'
, но кажется, что \b
якорь не работает в REGEXP_SUBSTR:
Например, проверить слово ABC
:
SELECT REGEXP_SUBSTR ('A, AB, ABC,ABCD', '\bABC\b') FROM DUAL;
но результат здесь (ноль). Что я делаю не так?
1 ответ
Чтобы точно проверить, содержит ли строка заданное слово, и при условии, что единственными символами, которые могут разделять два слова в строке, являются запятая и пробел, все, что вам нужно сделать, это обработать эти два символа, даже подумав о начале и конец строки:
SELECT 1 from dual
where REGEXP_LIKE ('A, AB, ABC,ABCD', '(^| |,)ABC(,|$| )')
Как это устроено:
(^| |,)
означает, что слову может предшествовать ничто (начало строки), запятая или пробел;
так же (,|$| )
означает, что за словом может следовать запятая, ничего (конец строки) или пробел