我有一列NAME(VARCHAR2),它存儲帳戶的ID號。使用Oracle中的REGEXP_SUBSTR從字符串中提取ID號
ROW_NBR NAME
---- -------------------------------------
1 JOHN SMITH ACCT_ID 123762839 PTY LTD
2 HELLOWORLD PTY LDT ACCT_ID: 123 762 839 CORP LTD
3 GLOBAL FUND PER_ID 32 123 456 789 ACCT_ID 989 190 293 CORP
4 WORLD CORP PER_ID: 32 123 456 789 ACCT_ID: 243 130 222 PTY
我試圖提取9位ACCT_ID,去掉 'ACCT_ID%' 的字符串,並將其存儲到與VARCHAR2(09)列。
結果應該是這樣的:
ROW_NBR NAME ACCT_ID
---- ------------------------------------- ----------
1 JOHN SMITH PTY LTD 123762839
2 HELLOWORLD PTY LDT CORP LTD 123712833
3 GLOBAL FUND PER_ID 32 123 456 789 CORP 989190293
4 WORLD CORP PER_ID: 32 123 456 789 PTY 243130222
到目前爲止,我已經能夠提取ACCT_ID,提供該號碼沒有空格。
SELECT REGEXP_SUBSTR(REGEXP_SUBSTR(NAME, 'ACCT_ID \s*\d+'), '\d+') FROM DUAL;
此SQL只適用於第一條記錄,因爲我可以獲得9位ACCT_ID。我如何爲其餘記錄做到這一點?我不能得到它只提取ACCT_ID值沒有任何空格(例如'989190293')。
預先感謝您!
非常感謝!像魅力一樣工作! :) – Aurora