0

varchar2(4000) データ型の URL 値を持つ列 (URL) があります。そこの値の一部は 4000 文字を超えているため、元の値を同じ列内の部分文字列に置き換えて、列内の 4000 文字を超える値のみを部分文字列にする方法はありますか?

4

2 に答える 2

2

Varchar は最大 4,000 文字をサポートします。SUBSTR などのすべての関数出力は varchar であるため、4,000 文字を超える文字列を保持することはできません。clob を使用する必要があります。ただし、clob は lobobject です。そのため、遅くなります。

テーブルの作成中に、2 つの列を追加して PL/SQL ブロックを使用できます。これは、PL/SQL で varchar が最大 32,767 文字になる可能性があるためです。

于 2012-12-18T17:56:09.427 に答える
2

このように4000文字を超える列を見つけることができます。

select userid, length(description)
from Users
where length(description) > 4000;

したがって、次のように CTL ファイル自体で解決できます。

description "SUBSTR(:description, 1, 4000)",

データを失いたくない場合は、CLOB代わりに datatype を使用できますvarchar2(4000)

于 2012-12-18T17:33:24.543 に答える