OracleでClobからVarchar2に変換する方法

異なるデータ型間で文字列形式のデータを変換することは、通常、Oracleでは簡単なプロセスですが、場合によっては他の場合よりも少し難しい場合があります。 これらの1つは、Oracleを使用してclobをvarchar2に変換するときに発生します。これは、 varchar2列には最大4,000文字が含まれますが、clobには大量の文字を格納できます データ。 ただし、dbms_lob substrメソッドまたはto_charのいずれかを使用し、最大サイズを指定することで、目標を達成することができます。

CLOBおよびVARCHAR2の説明

CLOB(または口語的に「clob」)は「文字ラージオブジェクト」の頭字語であり、最大4GBのデータを格納できます。 これは、DB2やOracleを含むいくつかのデータベースシステムで使用されています。 CLOBは、大量のデータを格納する必要がある場合に役立ちますが、サイズ自体が状況によっては問題を引き起こす可能性があります。 これが、Oracle CLOBからより管理しやすいサイズの文字列形式への変換が、操作を実行する前の優れたアプローチであることが多い理由です。

今日のビデオ

VARCHAR2形式は、拡張された最大文字列サイズを使用しない限り、通常は最大4,000バイトの少量のデータを格納します。使用する場合は、最大32,767バイトになる可能性があります。 シングルバイト文字セットの場合、通常、1列に最大4,000文字を含めることができます。 これら2つのデータ形式の最大サイズの不一致は、変換中に問題が発生する場所です。

dbms_lobsubstrメソッド

CLOB文字列をvarchar2に変換するには、SQL * Plusプログラムを開きます。 実行する必要のある変換の構文は次のとおりです。

SELECT dbms_lob.substr(clob_column、for_how_many_bytes、from_which_byte)FROMテーブル

ここで、括弧内の値は変更する必要のある値であり、最後に「テーブル」があります。 これらは、使用している列( "clob_column")とテーブルに対応します。 「for_how_many_bytes」では、変換するデータのバイト数を指定できます。「from_which_byte」では、開始点を指定できます。

したがって、「taxes」というテーブルと「net_pay」というフィールドがあり、最初から4,000バイトが必要だとすると、次のように入力します。

SELECT dbms_lob.substr(net_pay、4000、1)FROM税

文字列をvarchar2形式に変換します。

TO_CHARメソッド

非常によく似た構文でTO_CHARコマンドを使用して、同じ目標を達成することもできます。

SELECT TO_CHAR(SUBSTR(clob_column、0,3999))FROMテーブル

ここで、開始バイトと終了バイトは0と3999として指定されます(4,000文字の文字列の開始の場合) 最初から)、ただし、「clob_column」フィールドと「table」フィールドは、とまったく同じ方法で使用されます。 前。 したがって、同じ例で、次のように入力できます。

SELECT TO_CHAR(SUBSTR(net_pay、0,3999))FROM税

基本的に、これは単一のステップでプロセスを完了するのではなく、SUBSTRコマンドを使用して大きい方の文字列から部分文字列をプルし、次に「to_char」を使用して変換を処理します。 問題のclob列の情報が4,000バイト未満の場合は、部分文字列を指定する代わりに、to_charの後の括弧内に列の名前を入力できます。