VARCHAR2 および NVARCHAR2 データ・タイプ
VARCHAR2 および NVARCHAR2 データ・タイプは、Oracle VARCHAR2 および NVARCHAR2 データ・タイプを使用するアプリケーションをサポートします。この機能は、Db2® Warehouse on Cloud 管理対象サービスのエントリー・プランには適用されません。
効果
SQL ステートメント内で VARCHAR2 データ・タイプが明示的に指定されていた場合は、VARCHAR データ・タイプに暗黙的にマップされます。VARCHAR2 の最大長は、32672 BYTE または 8168 CHAR です。これは、VARCHAR の最大長 32672 OCTETS または 8168 CODEUNITS32 と同じです。 同様に、SQL ステートメント内で NVARCHAR2 データ・タイプが明示的に出現する場合は、NVARCHAR データ・タイプと同じ規則に従って 暗黙的にマップされます。
文字ストリング・リテラルのデータ・タイプは、長さと環境ごとのストリング単位に基づいた CHAR または VARCHAR です。 環境ごとのストリング単位での CHAR の最大長 (255 OCTETS または 63 CODEUNITS32) までの文字ストリング・リテラルのデータ・タイプは、CHAR です。 環境ごとのストリング単位での CHAR の最大長よりも長い文字ストリング・リテラルのデータ・タイプは、VARCHAR です。
- カタログ・ビューのストリング列情報が関連する比較では、データベース照合に関わらず、常に空白埋め比較セマンティクスによる IDENTITY 照合を使用します。
- FOR BIT DATA 属性を持つデータ・タイプが関連するストリング比較では、常に空白埋め比較セマンティクスによる IDENTITY 照合が使用されます。
| 一方のオペランド | 他方のオペランド | 結果のデータ・タイプ |
|---|---|---|
| CHAR(x) | CHAR(x) | CHAR(x) |
| CHAR(x) | CHAR(y) | VARCHAR(z)、ただし x != y、z = max(x,y) |
| GRAPHIC(x) | GRAPHIC(x) | GRAPHIC(x) |
| GRAPHIC(x) | GRAPHIC(y) | VARGRAPHIC(z)、ただし x != y、z = max(x,y) |
| GRAPHIC(x) | CHAR(y) | VARGRAPHIC(z)、ただし z = max(x,y) |
IN 述部の IN リストに対する結果タイプが固定長ストリング・データ・タイプとして解決され、IN 述部の左オペランドが可変長ストリング・データ・タイプである場合、IN リスト式は可変長ストリング・データ・タイプがあるものとして処理されます。
長さがゼロである文字ストリング値およびバイナリー・ストリング値 (LOB 値以外) は通常、NULL 値として処理されます。 CHAR、NCHAR、VARCHAR、NVARCHAR、BINARY、または VARBINARY に空ストリング値を割り当てるかキャストすると、NULL 値が生成されます。
- CONCAT 関数と連結演算子。 NULL または空ストリングの値は、連結結果では無視されます。 以下の表に、連結結果のタイプを示します。
表 2. 連結されたオペランドのデータ・タイプおよび長さ オペランド 長さ属性の組み合わせ1 結果1 CHAR(A) CHAR(B) <=S CHAR(A+B) CHAR(A) CHAR(B) >S VARCHAR(A+B) CHAR(A) VARCHAR(B) - VARCHAR(MIN(A+B, W)) VARCHAR(A) VARCHAR(B) - VARCHAR(MIN(A+B, W)) CLOB(A) CHAR(B) - CLOB(MIN(A+B, X)) CLOB(A) VARCHAR(B) - CLOB(MIN(A+B X)) CLOB(A) CLOB(B) CLOB(MIN(A+B, X)) GRAPHIC(A) GRAPHIC(B) <=T GRAPHIC(A+B) GRAPHIC(A) GRAPHIC(B) >T VARGRAPHIC(A+B) GRAPHIC(A) VARGRAPHIC(B) - VARGRAPHIC(MIN(A+B, Y)) VARGRAPHIC(A) VARGRAPHIC(B) - VARGRAPHIC(MIN(A+B, Y)) DBCLOB(A) CHAR(B) - DBCLOB(MIN(A+B, Z)) DBCLOB(A) VARCHAR(B) - DBCLOB(MIN(A+B, Z)) DBCLOB(A) DCLOB(B) DBCLOB(MIN(A+B, Z)) 1. イタリック体の変数の値に関する次の表を参照してください。 表 3. 上の表内のイタリック体の変数には、以下の値が保持されている Variable オペランドが次のストリング単位でない場合
CHAR (または CODEUNITS32)いずれかのオペランドが次のストリング単位の場合
CHAR (または CODEUNITS32S 255 63 T 127 63 W 32672 8168 X 2G 536870911 Y 16336 8168 Z 1G 536870911 - DECODE 関数。 最初の結果式が型なし NULL の場合、VARCHAR(0) とみなされます。最初の結果式が CHAR または GRAPHIC の場合、VARCHAR もしくは VARGRAPHICにプロモートされます。
- GREATEST 関数。 最初の式が CHAR、BINARY または GRAPHIC の場合、VARCHAR、VARBINARY もしくは VARGRAPHIC にプロモートされます。
- INSERT 関数。 4 番目の引数で NULL 値または空ストリングを指定すると、1 番目の引数から、2 番目の引数で示されたバイト位置から 3 番目の引数で示されたバイト数分が削除されます。
- LEAST 関数。 最初の式が CHAR、BINARY または GRAPHIC の場合、VARCHAR、VARBINARY もしくは VARGRAPHIC にプロモートされます。
- LENGTH 関数。 LENGTH 関数によって戻される値は、文字ストリング内のバイト数です。 空ストリング値の場合は、NULL 値が戻ります。
- NVL 関数。 最初の式が CHAR、BINARY または GRAPHIC の場合、VARCHAR、VARBINARY、もしくは VARGRAPHIC にプロモートされます。
- NVL2 関数。 結果式が型なし NULL の場合、VARCHAR(0) とみなされます。結果式が CHAR、BINARY、または GRAPHIC の場合、VARCHAR、VARBINARY、もしくは VARGRAPHIC にプロモートされます。
- REGEXP_REPLACE 関数。NULL 値または空ストリングである 3 番目の引数は空ストリングとみなされます。他の引数で指定された一致ストリングに基づいてソース・ストリングから削除されるストリングは、何にも置き換えられません。
- REPLACE 関数。 すべての引数の値のデータ・タイプが CHAR、VARCHAR、BINARY、VARBINARY、GRAPHIC、VARGRAPHIC のいずれかである場合は、以下のようになります。
- NULL 値または空ストリングである 2 番目の引数は空ストリングとみなされ、1 番目の引数が結果として戻されます。
- NULL 値または空ストリングである 3 番目の引数は空ストリングとみなされ、2 番目の引数によってソース・ストリングから削除されます。
値のデータ・タイプが CLOB または BLOB である引数があり、いずれかの引数が NULL 値である場合、結果は NULL 値になります。 REPLACE 関数の 3 つの引数すべてを指定する必要があります。
- SUBSTR 関数。 SUBSTR への参照は、1 番目の引数に基づく次の関数呼び出しで置換されます。
- SUBSTRB - 1 番目の引数が、ストリング単位が OCTETS で定義されているバイナリー・ストリングまたは文字ストリングの場合。
- SUBSTR2 - 1 番目の引数が、ストリング単位が CODEUNITS16 で定義されている GRAPHIC ストリングの場合。
- SUBSTR4 - 1 番目の引数が、ストリング単位が CODEUNITS32 で定義されている文字ストリングまたは GRAPHIC ストリングの場合。
- TO_CHAR 関数。 2 個の引数が指定され、最初の引数がストリングの場合、最初の引数は 10 進浮動小数点にキャストされます。
- TO_NCHAR 関数。 2 個の引数が指定され、最初の引数がストリングの場合、最初の引数は 10 進浮動小数点にキャストされます。
- TRANSLATE 関数。 from-string-exp は 2 番目の引数、to-string-exp は 3 番目の引数です。 to-string-exp が from-string-exp より短い場合は、char-string-exp (1 番目の引数) にある from-string-exp の余分な文字が削除されます。つまり、異なる埋め込み文字が 4 番目の引数で指定されない限り、デフォルトの pad-char 引数が実質的に空ストリングになります。
- TRIM 関数。 TRIM 関数呼び出しのトリム文字引数が NULL 値または空ストリングである場合は、NULL 値が戻されます。
- VARCHAR_FORMAT 関数。 2 個の引数が指定され、最初の引数がストリングの場合、最初の引数は 10 進浮動小数点にキャストされます。
ALTER TABLE ステートメントまたは CREATE TABLE ステートメントで、VARCHAR または VARGRAPHIC データ・タイプで定義された列に、明示的な値がなく DEFAULT 節が指定された場合、デフォルト値はブランク文字になります。列が VARBINARY データ・タイプとして定義されている場合、デフォルト値は 16 進数のゼロです。
- 可視データ・パーティションの場合、SYSCAT.DATAPARTITIONS.STATUS にはブランク文字が 1 つ含まれます
- パッケージ・バージョンが明示的に設定されていない場合、SYSCAT.PACKAGES.PKGVERSION にはブランク文字が 1 つ含まれます
- コンパイル・オプションが設定されていない場合、SYSCAT.ROUTINES.COMPILE_OPTIONS には NULL 値が 1 つ含まれます
SQL ステートメントでパラメーター・マーカーを使用すると、VARCHAR2 の使用に影響するデータ・タイプ変換が行われる場合があります。 例えば、入力値が長さゼロの VARCHAR で、LOB に変換された場合、結果は NULL 値になります。 ただし、入力値が長さゼロの LOB で、LOB に変換された場合には、結果は長さゼロの LOB になります。 入力値のデータ・タイプは、据え置き準備に影響される場合があります。
データ・タイプを定義する際、CHAR を CODEUNITS32 の同義語として使用でき、また BYTE を OCTETS の同義語として使用できます。
制約事項
- VARCHAR2 の長さ属性修飾子の CHAR は、Unicode データベース内でのみ CODEUNITS32 の同義語として受け入れられます。
- LONG VARCHAR および LONG VARGRAPHIC データ・タイプはサポートされません (ただし明示的にはブロックされません)。
- VARCHAR2 パラメーターの最大長を指定しない場合、デフォルトは 4000 バイトになります。
- TIS620-1 (コード・ページ 874) タイ語データベースの文字のソートに使用される NLSCHAR 照合は、DB2_COMPATIBILITY_VECTOR=ORA の設定時にはサポートされません。