首页 > 解决方案 > Oracle REGEXP_LIKE

问题描述

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

我为搜索印度而编写的查询也检索到带有“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$'))

谢谢你!

标签: sqlregexoracleselectwhere-clause

解决方案


我会建议:

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

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


推荐阅读