0

列名が「REMARKS」のテーブル一時があります

スクリプトを作成

Create table temp (id number,remarks varchar2(2000));

スクリプトを挿入

Insert into temp values (1,'NAME =GAURAV Amount=981 Phone_number =98932324 Active Flag =Y');
Insert into temp values (2,'NAME =ROHAN Amount=984 Phone_number =98932333  Active Flag =N');

ここで、テーブルの備考欄から NAME 、Amount 、phone_number、active_flag の対応する値を取得したいと思います。

正規表現を使おうと思ったのですが、使いこなせません。substr と instr を使用して remakrs 列から名前をフェッチしようとしましたが、4 つすべてをフェッチする場合は、pl sql を記述する必要があります。正規表現を使用してこれを実現できますか。

次のような出力(CURSOR)を取得できますか

id  Name    Amount phone_number Active flag
------------------------------------------
1  Gaurav   981    98932324     Y
2  Rohan    984    98932333     N
-------------------------------------------

ご協力いただきありがとうございます

4

1 に答える 1

1

次のようなものを使用できます:

SQL> select regexp_replace(remarks, '.*NAME *=([^ ]*).*', '\1') name,
  2         regexp_replace(remarks, '.*Amount *=([^ ]*).*', '\1') amount,
  3         regexp_replace(remarks, '.*Phone_number *=([^ ]*).*', '\1') ph_number,
  4         regexp_replace(remarks, '.*Active Flag *=([^ ]*).*', '\1') flag
  5    from temp;

NAME                 AMOUNT               PH_NUMBER            FLAG
-------------------- -------------------- -------------------- --------------------
GAURAV               981                  98932324             Y
ROHAN                981                  98932324             N
于 2013-03-20T15:37:27.687 に答える