需要拉出由5或6位數字組成的數字序列,不包括左側包含字母序列'CR'、'MRLID_'、'GEO_'的數字序列。第一個連字符不是搜索鍵
我的例子:
SELECT REGEXP_SUBSTR('84830-Soc_Dem-Carousel-CR236666',
'([^CR\d{6}] )|([^MRLID_\d{5}] )|([GEO_\d{5}] )\d{5,6}',
1,
1,
'i')
FROM dual
如果輸入字串具有以下形式:
'McCombo_Mar-Apr19_mcd_installs;759678/;CR759428-Soc_Dem-Multi_roll_15sec-R27?<MRLID_12345>%GEO_78934?]ysl_fraw_blackopium_display_aw'
有必要提取值 759678。這是一個數字序列,它可以由 5 或 6 個字符組成,它可以位于行中的任何位置,不可能以某種方式用分隔符選擇它。
uj5u.com熱心網友回復:
改為使用空白regexp_replace替換:-.*
select regexp_replace('84830-Soc_Dem-Carousel-CR236666', '-.*','') from dual
見現場演示。
uj5u.com熱心網友回復:
這個怎么樣?
SQL> with test (col) as
2 (select 'McCombo_Mar-Apr19_mcd_installs;759678/;CR759428-Soc_Dem-Multi_roll_15sec-R27?<MRLID_12345>%GEO_78934?]ysl_fraw_blackopium_display_aw' from dual)
3 select val
4 from (select regexp_substr(col, '[[:alnum:]_] ', 1, level) val
5 from test
6 connect by level <= regexp_count(col, '[[:alnum:]_] ')
7 )
8 where regexp_like(val, '^\d $');
VAL
--------------------------------------------------------------------------------
759678
SQL>
- 子查詢回傳所有字母數字子字串(即
regexp_substr) - 主查詢回傳僅由數字組成的值(即
regexp_like)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/422043.html
標籤:
上一篇:使用SQL將輸出從視圖轉換為雪花中的json和陣列的問題
下一篇:在附加列中顯示用戶的上一個日期
