首页 > 解决方案 > 在 SQL 中查找字符串中的唯一尾随字符

问题描述

我在表中有一个列Job_Name。该列具有值AC_ACCOUNTMK_SALES等。我想在Job_Name列中的字符“_”之后打印 DISTINCT 尾随字符。

能够在“_”之后打印字符,但不能使用单个查询打印 UNIQUE 字符

试过:

select substr('ACCOUNT', 5, 1) from dual
union
select substr('ACCOUNT', 6, 1) from dual
union
select substr('ACCOUNT', 4, 1) from dual

依此类推,但这将返回我必须再次连接的字符并记住我必须在列中概括这一点,这个查询是不可行的。

我希望字段值AC_ACCOUNT的输出是ACOUNT

标签: sqloracle

解决方案


如果表很大,可能会执行更好的选项(比正则表达式选项)使用SUBSTR + INSTR组合,例如(感谢@Gary 的测试用例)

SQL> with tbl(job_name) as (
  2    select 'AC_ACCOUNT' from dual union all
  3    select 'MK_SALES' from dual union all
  4    select 'A_SALES' from dual union all
  5    select NULL from dual union all
  6    select 'ABC123_big_account_name' from dual
  7  )
  8  select distinct substr(job_name, instr(job_name, '_') + 1) str
  9  from tbl;

STR
----------------------------------------------------------------------
ACCOUNT

big_account_name
SALES

SQL>

推荐阅读