oracle sql 'like' 查找特定子串

oracle sql 'like' to find a specific substring

使用 oracle sql,我想找到一个文本,例如包含确切的词 'SAN' 或其复数(如果有的话)。 所以我的尝试是这样的:

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

但查询的结果之一是任何包含 'san' 的文本,例如:

artisan
partisan

但期望的结果应该是:

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

如何在 oracle sql 中找到文本中的确切单词?

谢谢。

我更喜欢正则表达式,像这样

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

\w - 表示单词边界,i - 不区分大小写

但纯 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