regexp_replace 从包含 - 的字符串中提取

regexp_replace to extract from string containing -

用这个拉我的头发。非常感谢任何帮助或指导。

列值:

u-165645,c-934846,f-598715,one, appple
c-997556.41,test,u-4404932, testing,two

正在尝试提取以 'c-' 开头的值。 从上面的例子中,提取的是:

934846
997556.41

你捕获:

c-([*]*)

并替换为


我不知道你使用的是哪种语言或编辑器...我已经在 Notepad++ 上试过了

试一试。 WITH 子句只是使用通用 Table 表达式 (CTE) 设置您的数据。正则表达式使用捕获的组来 return “c-” 后跟逗号或行尾时的内容,因此模式在字符串中出现的位置无关紧要。

WITH tbl(ID, DATA) AS (
  SELECT 1, 'u-165645,c-934846,f-598715,one, appple' FROM dual UNION ALL
  SELECT 2, 'c-997556.41,test,u-4404932, testing,two' FROM dual
)
SELECT ID,
       REGEXP_SUBSTR(DATA, 'c-(.*?)(,|$)', 1, 1, NULL, 1) c_element
FROM tbl;


        ID C_ELEMENT                              
---------- ---------------------------------------
         1 934846                                 
         2 997556.41                              

2 rows selected.