私は、アカウントのID番号を格納する列NAME(VARCHAR2)を持っています。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を取得できるため、第1レコードのみで動作します。それ以外のレコードではどうすればいいですか?スペースを使わずにACCT_IDの値だけを抽出することはできません(例: '989190293')。
ありがとうございます!
ありがとうございました!チャームのように働いた! :) – Aurora