sql中的子字符串匹配

时间:2018-09-27 10:54:47

标签: sql oracle

我有一个查询

select distinct(tad.ASP_NAME)
from TABLE_ASP_DETAILS tad
where tad.ASSIGNED_FE_LAST_NAME = 'asurekam2'

其中ASSIGNED_FE_LAST_NAME等同于SureKAM2,对于上述查询,它应返回SureKAM2。

类似地

select distinct(tad.ASP_NAME)
from TABLE_ASP_DETAILS tad
where tad.ASSIGNED_FE_LAST_NAME = 'ABT_Dallas1_TX'

应从表返回ABT。

所以基本上我想在我的输入字符串中包含类似的功能,并且它应该能够在tad.ASP_NAME中搜索类似的内容。 ASP名称将是输入字符串的子字符串

ACS_ITALY_CATANIA,ACS_ITALY_BARI,ACS_xxxxx任何输入都应该能够在tad.ASP_NAME中找到ACS值

ADNTELECOM_Sayedur_Rahman,ADNTELECOM_Reza_Bin_Mujib,ADNTELECOM_Reza_Bin_Mujib 应该可以在tad.ASP_NAME中找到ADNTELECOM值

3 个答案:

答案 0 :(得分:1)

这似乎可以满足您的要求:

where lower('asurekam2') like '%' || lower(tad.ASSIGNED_FE_LAST_NAME) || '%'

答案 1 :(得分:0)

这会吗?您没有提供测试用例,所以我即兴。您需要6-8行。

SQL> with table_asp_details(asp_name, assigned_fe_last_name) as
  2    (select 'ACS_ITALY_CATANIA', 'ACS_Dallas1_TX' from dual union all
  3     select 'ACS_ITALY_BARI', 'ACS_Dallas1_TX' from dual
  4    )
  5  -- this is what you need
  6  select distinct regexp_substr(asp_name, '[[:alpha:]]+') result
  7  from table_asp_details tad
  8  where tad.assigned_fe_last_name = 'ACS_Dallas1_TX';

RESULT
-----------------
ACS

SQL>

答案 2 :(得分:0)

我认为您正在寻找类似的内容,但很难说的这么少:

select distinct(tad.ASP_NAME)
from TABLE_ASP_DETAILS tad
where regexp_like('asurekam2', tad.ASSIGNED_FE_LAST_NAME)