获取单词在逗号分隔的字符串中的首次出现

时间:2019-01-30 19:13:17

标签: oracle plsql

我在数据库中有一个名为product的特定字段,该字段以逗号分隔的形式存储数据。

我想做的是检索整个字符串中第一个出现的单词,该单词包含“ IN”字符,然后获取“ IN”之后的数字。

我尝试的是以下代码,但这将返回“ 15,12”。

products = "IN15,IN12"

products = "IN 15,IN12"

products = "TEST,IN15"

WHEN REGEXP_LIKE(products, '^IN') THEN regexp_replace(products, '[^0-9]', '')

在上述所有情况下,IN后面有逗号或没有逗号,我希望输出为“ 15”。

1 个答案:

答案 0 :(得分:0)

像这样吗?

SQL> with test (products) as
  2    (select 'IN15,IN12'  from dual union all
  3     select 'IN 15,IN12' from dual union all
  4     select 'TEST,IN15'  from dual
  5    )
  6  select products,
  7    regexp_substr(substr(products, instr(products, 'IN') + 2), '\w+') result
  8  from test;

PRODUCTS   RESULT
---------- ----------------------------------------
IN15,IN12  15
IN 15,IN12 15
TEST,IN15  15

SQL>

它有什么作用:

  • INSTR查找字符串中IN的出现
  • SUBSTR返回第一个IN之后的所有内容
  • REGEXP_SUBSTR提取该子字符串中的第一个单词