2016-08-11 21 views
-1

これは私のPL/SQLブロックです。 enter image description here1行で動的変数の文字列値を処理する方法

'%[CDATA[/documents/%/4min.png/%' 

:私は以下のように1行でそれを取得できますか

'%[CDATA[/documents/%/4min.png 
/%'. 

:私のような2行にそれを「V_QUERY」変数切断の結果を実行します。

declare 
    cursor c1 is 
     select rtrim(ltrim(substr(typesettings, 7), '"'), '"') as typesettings 
     from trashentry 
     where rownum < 2; 
    v_query varchar2(32767); 
begin 
    for r1 in c1 
    loop 
     v_query := '''%[CDATA[/documents/%/' || r1.typesettings || '/%'''; 
     dbms_output.put_line(v_query); 
    end loop; 

end; 
+0

取得したい出力の例を挙げてください。 – Rene

+0

'r1.typesettings'はおそらく最後に改行があります。 'trashentryからの選択ダンプ(typesettings)が示すものを表示してください(長すぎる場合は、最後の数文字コードを表示してください)。 – mathguy

+0

ありがとう@ルネ、結果は '%[CDATA [/ドキュメント/%/ 4min.png /%]'として単一行で '%[CDATA [/ドキュメント/%/ 4min.png /%' 1行での意味 – Shubh

答えて

0

ほとんどの場合、あなたはtypesettingsの端からchr(10)をトリミングする必要があります。 chr(13)も同様にトリミングしても問題ありません。

入力文字列に保持する必要がある二重引用符がないと仮定すると、一度にいくつかのことを達成できます。rtrim(ltrim(...))の代わりに(とにかくtrim(...)である必要があります。

select translate(substr(typesettings, 7), 'x"' || chr(10) || chr(13), 'x') as typesettings 
....... 

お知らせ最後の二つのパラメータでx;:一方のみの機能の代わりに、2)を呼び出し、あなたはtranslateを使用することができます実際には何もしませんが、translate関数の制限(これは、オラクルの空の文字列の扱いがNULLであるためです)を超えて機能します。この例ではtranslateは入力文字列のxをすべてxに置き換え、",chr(10)およびchr(13)の各オカレンスは単純に削除されます。

関連する問題