[使用正则表达式查找与Oracle表匹配的字符串

问题描述 投票:0回答:2

我在一个接受company_name输入的Oracle 12c数据库上具有一个Oracle存储过程。从该company_name中,我需要查找并标记联邦机构。为此,我有一个表(TBL_FED_KEY),其中有一列(KEY_1)关键字。该表包含近50个值,例如:

ARMY     
FEDERAL     
AIR FORCE     
VETERANS     
HOMELAND SECURITY     
INDIAN HOSPITAL     
WILL ROGERS     

为了让您了解可以传递给过程的company_name字符串,下面是示例:

US Army - Munson  Health Center     
Federal Bureau of Prisons,BOP/DOJ-     
Hickam Air Force Base Pharmacy     
Minnesota Veterans Home Pharmacy     
P.H.S. Indian Hospital     
Will Rogers Health Center     

可以使用什么Oracle SQL将传入的company_name与TBL_FED_KEY.KEY_1进行匹配?我已经尝试过REGEXP_INSTR的多个变体,但似乎无法百分百地工作。 REGEXP_INSTR甚至是完成此任务的最佳工具吗?

谢谢!

sql regex oracle match oracle12c
2个回答
0
投票

您可以只使用like

select f.*
from TBL_FED_KEY f
where lower(i.name) like '%' || lower(KEY_1) || '%'

0
投票

似乎您希望这些字符串之间不区分大小写的匹配。因此,请将REGEXP_LIKE()函数与不区分大小写的[i)选项一起使用:

SELECT *
  FROM TBL_FED_KEY
 WHERE REGEXP_LIKE(company_name,key_1,'i')
© www.soinside.com 2019 - 2024. All rights reserved.