我在一个接受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甚至是完成此任务的最佳工具吗?
谢谢!
您可以只使用like
:
select f.*
from TBL_FED_KEY f
where lower(i.name) like '%' || lower(KEY_1) || '%'
似乎您希望这些字符串之间不区分大小写的匹配。因此,请将REGEXP_LIKE()
函数与不区分大小写的[i
)选项一起使用:
SELECT *
FROM TBL_FED_KEY
WHERE REGEXP_LIKE(company_name,key_1,'i')