1. カメラ
  2. カーオーディオ&エレクトロニクス
  3. ホームオーディオ
  4. パーソナルオーディオ
  5. テレビ
  6. スマートホーム
  >> 電子技術オンライン >  >> スマートホーム >> スマートライフ

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

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

CLOB と VARCHAR2 の説明

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

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

dbms_lob substr メソッド

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 税

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