我有一個包含資料和特定列的表,我需要在其中剪切資料,例如:
on unknown id:138702 client_type:0 contract:25369/NBX1/010322
所以我只需要剪138702
我嘗試使用SUBSTR,但問題是除了上面的示例之外還有:
on CALL3 id:138702 client_type:0 contract:25369/NBX1/010322
on SOPP6 id:138702 client_type:16 contract:25369/JMZXH3/010322
所以結果有點亂。
如果有人可以幫助我,我將不勝感激。
uj5u.com熱心網友回復:
一種選擇使用REGEXP_REPLACE()函式,例如
SELECT REGEXP_REPLACE(col, '(.*id:)(\d ).*','\2') AS id
FROM t
它找到數字后面id:的數字 end by 運算子匹配所有出現的數字,其中整個模式將字串分為兩部分。第一部分從開頭 upto 開始id:,其余(\2)是 id 值
Demo
uj5u.com熱心網友回復:
如果您正在尋找字串后面的第一個數值id:,那么這可能是一個選項:
樣本資料:
SQL> with test (col) as
2 (select 'on unknown id:138702 client_type:0 contract:25369/NBX1/010322' from dual union all
3 select 'on CALL3 id:138702 client_type:0 contract:25369/NBX1/010322' from dual union all
4 select 'on SOPP6 id:138702 client_type:16 contract:25369/JMZXH3/010322' from dual
5 )
查詢從這里開始:
6 select col,
7 ltrim(regexp_substr(col, 'id:\d '), 'id:') result
8 from test;
COL RESULT
-------------------------------------------------------------- ----------
on unknown id:138702 client_type:0 contract:25369/NBX1/010322 138702
on CALL3 id:138702 client_type:0 contract:25369/NBX1/010322 138702
on SOPP6 id:138702 client_type:16 contract:25369/JMZXH3/010322 138702
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/455853.html
