【问题标题】:oracle sql 'like' to find a specific substringoracle sql 'like' 查找特定的子字符串
【发布时间】:2015-05-02 18:12:11
【问题描述】:

使用 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 中找到文本中的确切单词?

谢谢。

【问题讨论】:

    标签: sql oracle sql-like


    【解决方案1】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2015-10-28
      • 2013-04-14
      相关资源
      最近更新 更多