【问题标题】:Oracle REGEXP_LIKEOracle REGEXP_LIKE
【发布时间】:2020-06-12 14:11:12
【问题描述】:

有人可以帮助我使用 Oracle 查询来搜索附加任何非字母字符或空格的文本 例如:- 印度- 印度, 印度 -印度 ,印度 印度

我为搜索印度而编写的查询也检索到带有“INDIAA”的行。

SELECT *
FROM TABLE_NAME
WHERE (REGEXP_LIKE (COLUMN_NAME,'INDIA[,_)("-]') 
     OR REGEXP_LIKE (COLUMN_NAME,'[,_)("-]INDIA')
     OR REGEXP_LIKE (COLUMN_NAME,'[,_)("-]INDIA[,_)("-]')
     OR  REGEXP_LIKE (COLUMN_NAME,'\sINDIA\s')
     OR  REGEXP_LIKE (COLUMN_NAME,'\sINDIA') 
     OR REGEXP_LIKE (COLUMN_NAME, 'INDIA\s') -- this line is causing problem
     OR REGEXP_LIKE (COLUMN_NAME, '^INDIA$'))

谢谢!

【问题讨论】:

  • 有效匹配和不匹配的示例会有所帮助。
  • 是的......我错过了这里的重点。我们是否要查找所有包含“INDIA”和一些非字母数字字符的值?
  • 正如其他人所建议的,您能否添加更多有效和无效匹配的示例?

标签: sql regex oracle select where-clause


【解决方案1】:

我建议:

regexp_like(column_name, '(^|\W)INDIA(\W|$)')

这会搜索'INDIA',由非单词字符 (\W) 包围,或者在字符串的开头或结尾。

【讨论】:

  • 明智的正则表达式。我也在考虑类似的事情
猜你喜欢
  • 2010-11-28
  • 2011-11-25
  • 2017-07-21
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多