我在数据库中有一个名为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”。
答案 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
提取该子字符串中的第一个单词