【问题标题】:Oracle Regular Expression-To match an exact wordOracle 正则表达式 - 匹配一个精确的单词
【发布时间】:2017-09-18 02:35:08
【问题描述】:

我需要在表中的一个名为DESCRIPTION 的列中搜索与ICE、Ice 或ice 的确切单词匹配的列。关键字之前或之后可能有其他词,但不应像 Price、Mice、Nice。我想像普通的LIKE 一样使用Oracle 正则表达式的帮助,我得到了前面提到的Price、Mice 等字符串。我试过这样的(DESCRIPTION LIKE '%ICE%' or DESCRIPTION LIKE '%Ice%')。请帮忙。

非常感谢。

【问题讨论】:

  • 您可以使用upper() 函数将描述转换为大写,然后执行UPPER(DESCRIPTION) LIKE '%ICE%'。确切的词:你试过像'% ICE %'这样的空格吗?
  • 或者,REGEXP_LIKE( DESCRIPTION, '([^[:alnum:]]|^)ice($|[^[:alnum:]])', 'i')

标签: sql regex oracle


【解决方案1】:

试试正则表达式,如果是Oracle,它是regexp_like

https://docs.oracle.com/cd/B12037_01/server.101/b10759/conditions018.htm

select *
  from MyTable
 where regexp_like(DESCRIPTION, '^(.*\s+)?ice(\s+.*)?$', 'i') 

【讨论】:

    【解决方案2】:
    SELECT *
    FROM   your_table
    WHERE  UPPER( description ) = 'ICE'
    OR     UPPER( description ) LIKE 'ICE %'
    OR     UPPER( description ) LIKE '% ICE'
    OR     UPPER( description ) LIKE '% ICE %';
    

    或者

    SELECT *
    FROM   your_table
    WHERE  REGEXP_LIKE( description, '(^|[^a-z])ice($|[^a-z])', 'i' )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      相关资源
      最近更新 更多