2015-05-02 3 views
1

Используя oracle sql, я хочу найти текст, содержащий, например, точное слово «SAN» или его множественное число, если оно есть. Так что моя попытка была такова:oracle sql 'like', чтобы найти определенную подстроку

select * 
from table a 
where upper(a.text_field) like '%SAN%' 

Но один из результатов запроса был какой-либо текст, содержащий «Сан -», такие как:

artisan 
partisan 

Но желаемые результаты должны быть:

abcde san fgeft 
san abcde 
abcde san(s) <- if there is a plural form 

Как найти точное слово в тексте в oracle sql?

спасибо.

ответ

1

Я предпочитаю регулярное выражение, как этот

select * 
from table a 
where regexp_like(a.text_field,'\wsan\w', 'i') 

\w - означает слово граница, i - случай unsensetive

Но чистый SQL может быть со всеми границами слов перестановок, например:

select * 
from table a 
where upper(a.text_field) like '% SAN %' or upper(a.text_field) like 'SAN %' or upper(a.text_field) like '% SAN' --- and so on 
Смежные вопросы