2

この SELECT が準備された文字列を含む1 つのレコードのみを返す場合、SELECT の結果を DECODE パラメータとして使用することは可能ですか? 例えば:

SELECT replace(replace(serialized_data)....) as result FROM テーブル

次の結果を 1 行で返します。

0,'ラベル0',1,'ラベル1',2,'ラベル2'

しかし、これを DECODE に入れると、1 つのパラメーターとして解釈されます。この結果の「文字列」「純粋な」 SQLコードに変換する可能性はありますか? ;)

助けてくれてありがとう。

4

3 に答える 3

0

decodeを使用して複製できます。以下の例 (おそらくかなり片付けられる可能性がありますが、機能します):instrsubstr

select DTXT
      ,Nvl(
         Substr(
           DTXT
          ,Instr(DTXT, SEARCHTXT || VALMTCH)
           + Length(SEARCHTXT || VALMTCH)
          ,  Instr(DTXT, VALSEP, Instr(DTXT, SEARCHTXT || VALMTCH))
           - Instr(DTXT, SEARCHTXT || VALMTCH)
           - Length(SEARCHTXT || VALMTCH))
        ,CASEOTHER)
         as TXTMATCH
  from (select '0=BLACK;1=GREEN;2=YELLOW;' as DTXT
              ,'1' as SEARCHTXT
              ,';' as VALSEP
              ,'=' as VALMTCH
              ,'OTHER' as CASEOTHER
          from Dual)

ただし、最後の値を確実に見つけるために、テキストの最後にセミコロン (VALSEP) を付ける必要があります (ただし、さらに調べれば、それを回避することは可能です)。

于 2011-12-28T15:56:09.317 に答える
0

Oracle のバージョンに応じて、list_agg または wm_concat。

http://docs.oracle.com/cd/E14072_01/server.112/e10592/functions087.htm

于 2011-12-28T12:39:31.870 に答える
0

動的 SQL を使用できます。

declare
  DECTXT   varchar2(4000);
begin
  select replace(replace(serialized_data)..)..) as result into dectxt from table;
  execute immediate 'select decode(col1,' || DECTXT || ') from tab1';
end;

これは簡単な例であり、出力などは表示されません。

于 2011-12-28T12:57:34.700 に答える