0

私は、Oracle のように定義されたTABLE1列を持っています。COL1COL2LongVarChar

ユーザーがレコードを TABLE1 にロードするたびに、COL1 には古い値が含まれ、COL2 には古い値 + 新しい値が含まれます。すなわち

例:

COL1            COL2
                Bat
Bat             Bat Ball
Bat Ball        Bat Ball Wicket
Bat Ball Wicket Bat Ball Wicket Stump

唯一の新しい価値を得るために、COL1 のコンテンツから COL2 のコンテンツを削除する予定です..これはかなり悪い考えだと思います..

通常の「-」演算子を試したところ、"Expected Numeric but received CLOB"

しかし、これを達成するためのより良いアイデアや方法はありますか?

本当にありがとう

4

1 に答える 1

2

あなたがVarchar2を意味すると仮定すると、(あなたの例のように)古い値はそれぞれ追加のスペースで区切られており、次のようなものが機能するはずです:

SELECT SUBSTR(col2, NVL(LENGTH(col1)+2,0)) "New Value" FROM TABLE1

例えば:

select substr('Bat', nvl(length(null)+2,0)) from dual;

「コウモリ」の結果

select substr('Bat Ball', nvl(length('Bat')+2,0)) from dual;

結果は「ボール」


ただし、実際にCLOBデータ型について話している場合は、次のように置き換えます。

dbms_lob.substr( colX, 4000, 1) 

colX の代わり (X は 1 または 2)

[これにより、CLOB の最初の 4000 バイトが得られます。さらに取得するには、PL/SQL を使用する必要があります]

于 2012-11-27T22:37:45.020 に答える