2016-05-07 5 views
0

ORACLE-CERTIFICATEでは、どのように行うべきかわからないという部分文字列に関する問題が見つかりました。誰もがこれを理解していますか?ORACLE - サブストリング

次のスクリプトのテーブルボーナスを作成し、ボーナステーブルにDML挿入を実行します。 ヒント:このスクリプトをエラーなしで実行し、「ここに結果があります」という出力を生成できるはずです。ここで

select (substr(
      substr(
      substr(
       l.object, 
       instr(l.object,',')+1 
      ), 
      instr(
       substr(
       l.object, 
       instr(l.object,',')+1 
      ), 
       ',' 
      )+1 
     ), 
      instr(
      substr(
       substr(l.object,instr(l.object,',')+1), 
       instr(
       substr(
        l.object, 
        instr(l.object,',')+1 
       ), 
       ',' 
      )+1 
      ), 
      ',' 
     )+1 
     ) 
    ) ref 
from Bonus l 
where l.l_index = 't234' 

が出力されます。

REF               
------------------------------------------------------------ 
Here is the result 
+0

本当にはっきりしていないあなたの質問が何でありますか。タスクには、(1)BONUSテーブルを作成するステートメント、(2)そのテーブルに行を挿入するステートメントなど、2つのSQLステートメントが記述されているように見えます。 –

答えて

0

はい、それは第三コンマの後に続く文字列の残りの部分を探しています:

Oracleのセットアップ

CREATE TABLE Bonus (l_index, object) AS 
SELECT 't234', ',,,Here is the result' FROM DUAL; 

クエリ

select (substr(
      substr(
      substr(
       l.object, 
       instr(l.object,',')+1 
      ), 
      instr(
       substr(
       l.object, 
       instr(l.object,',')+1 
      ), 
       ',' 
      )+1 
     ), 
      instr(
      substr(
       substr(
       l.object, 
       instr(l.object,',')+1 
      ), 
       instr(
       substr(
        l.object, 
        instr(l.object,',')+1 
       ), 
       ',' 
      )+1 
      ), 
      ',' 
     )+1 
     ) 
    ) ref 
from Bonus l 
where l.l_index = 't234' 

出力

REF     
--------------------- 
Here is the result  

このクエリの簡単なバージョンは、次のようになります。

SELECT SUBSTR(object, INSTR(object, ',', 1, 3) + 1) AS ref 
FROM Bonus 
WHERE l_index = 't234';