ヘッダーをスキップ
Oracle TimesTen In-Memory Database SQLリファレンス・ガイド
リリース7.0
E05176-02
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

文字データ型

文字データ型は、文字(英数字)データをデータベース・キャラクタ・セットまたはUTF-16書式で格納します。

文字データはバイト値を使用する文字列に格納されます。バイト値は、データ・ストア作成時に定義されるデータ・ストア・キャラクタ・セットのいずれかに対応しています。シングルバイト・キャラクタ・セットとマルチバイト・キャラクタ・セットの両方がサポートされています。

キャラクタ・タイプは、次のとおりです。

CHAR型

CHAR型は、固定長文字列を指定します。CHAR列に値を挿入する際、定義されている列長よりその値が短い場合は、列長に合せてTimesTenの空白文字が埋め込まれます。CHAR列に値を挿入する際に、その値が定義されている列長より長い場合は、エラーが戻されます。

デフォルトでは、列長はバイトで定義されます。CHAR修飾子を使用し、列長を文字で定義します。文字のサイズは、データベース・キャラクタ・セットに応じて1バイトから4バイトの範囲になります。BYTE修飾子およびCHAR修飾子は、NLS_LENGTH_SEMANTICSパラメータ設定より優先されます。NLS_LENGTH_SEMANTICSの詳細は、「ALTER SESSION」および『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のグローバリゼーション・サポート属性の設定に関する項を参照してください。


注意: CHAR型を使用すると、長さが0(ゼロ)の文字列はNULLとして解釈されます。TT_CHAR型を使用すると、長さが0(ゼロ)の文字列は、NULL以外の有効な値となります。CHARとTT_CHARの両方で、空白埋め比較セマンティクスが使用されます。TT_CHAR型は下位互換用にサポートされています。

例1.1

次の例では、表を作成します。列は型CHARおよびTT_CHARを使用して定義されます。これらの型では、空白埋め比較セマンティクスが使用されます。

Command> create table TypeDemo (Name CHAR (20), Name2 TT_CHAR (20));

Command> INSERT INTO TypeDemo VALUES ('SMITH     ',

'SMITH     ');

1 row inserted.

Command> DESCRIBE TypeDemo;

Table USER.TYPEDEMO:

  Columns:

    NAME                            CHAR (20)

    NAME2                           TT_CHAR (20)

1 table found.

(primary key columns are indicated with *)

Command> select * from TypeDemo;

< SMITH     , SMITH      >

1 row found.

Command> # Expect 1 row found; blank-padded comparison semantics

Command> select * from TypeDemo where Name = 'SMITH';

< SMITH     , SMITH      >

1 row found.

Command> select * from TypeDemo where Name2 = 'SMITH';

< SMITH     , SMITH      >

1 row found.

Command> # Expect 0 rows; blank padded comparison semantics.

Command> SELECT * FROM TypeDemo where Name > 'SMITH';

0 rows found.

Command> SELECT * FROM TypeDemo where Name2 > 'SMITH';

0 rows found.

例1.2

次の例では、ALTERを使用して表TypeDemoを変更し、列Name3を追加します。列Name3は、文字セマンティクスで定義されます。

Command> ALTER TABLE TypeDemo

> ADD COLUMN Name3 CHAR (10 CHAR);

Command> DESCRIBE TypeDemo;

Table USER.TYPEDEMO:

  Columns:

    NAME                            CHAR (20)

    NAME2                           TT_CHAR (20)

    NAME3                           CHAR (10 CHAR)

1 table found.

NCHAR型

NCHARデータ型は、2バイトのUnicode文字の固定長文字列です。NCHARデータ型は、Unicodeの空白文字U+0020 SPACEを使用して指定した長さまで調整されます。空白埋め比較セマンティクスが使用されます。


注意: NCHAR型を使用すると、長さが0(ゼロ)の文字列はNULLとして解釈されます。TT_NCHAR型を使用すると、長さが0(ゼロ)の文字列は、NULL以外の有効な値となります。NCHARとTT_NCHARの両方で、空白埋め比較セマンティクスが使用されます。TT_NCHAR型は下位互換用にサポートされています。

例1.3

次の例では、ALTERを使用して表TypeDemoを変更し、列Name4を追加します。データ型はNCHARです。

Command> ALTER TABLE TypeDemo

> ADD COLUMN Name4 NCHAR (10);

Command> DESCRIBE TypeDemo;

Table USER.TYPEDEMO:

  Columns:

    NAME                            CHAR (20)

    NAME2                           TT_CHAR (20)

    NAME3                           CHAR (10 CHAR)

    NAME4                           NCHAR (10)

1 table found.

VARCHAR2型

VARCHAR2データ型は、可変長文字列を指定します。VARCHAR2列を定義する場合は、バイトまたは文字の最大数を定義します。各値は指定したとおりに格納されます。この値が列の最大長を超えることはできません。

最大長を指定する必要があります。最小値は1バイト以上である必要があります。文字の最大長を指定するには、CHAR修飾子を使用します。たとえば、VARCHAR2 (10 CHAR)です。

文字のサイズは、データベース・キャラクタ・セットに応じて1バイトから4バイトの範囲になります。BYTE修飾子およびCHAR修飾子は、NLS_LENGTH_SEMANTICSパラメータ設定より優先されます。NLS_LENGTH_SEMANTICSの詳細は、「ALTER SESSION」および『Oracle TimesTen In-Memory Database オペレーション・ガイド』のグローバリゼーション・サポート属性の設定に関する項を参照してください。


注意: VARCHARデータ型を使用しないで、VARCHAR2を使用してください。これら2つの型は現在同じ意味で使用されていますが、VARCHARデータ型は、別のセマンティクスを使用する別のデータ型として再定義される予定です。


注意: VARCHAR2型を使用すると、長さが0(ゼロ)の文字列はNULLとして解釈されます。TT_VARCHAR型を使用すると、長さが0(ゼロ)の文字列は、NULL以外の有効な値となります。VARCHAR2では非空白埋め比較セマンティクスが使用され、TT_VARCHAR型では空白埋め比較セマンティクスが使用されます。TT_VARCHAR型は下位互換用にサポートされています。

例1.4

次の例では、ALTERを使用して表TypeDemoを変更し、列Name5およびName6を追加します。Name5はVARCHAR2型で、Name6はTT_VARCHARで定義されます。この例では、列Name5での非空白埋め比較セマンティクスの使用方法および列Table6での空白埋め比較セマンティクスの使用方法が示されています。

Command> ALTER TABLE TypeDemo ADD COLUMN Name5 VARCHAR2 (20);

Command> ALTER TABLE TypeDemo ADD COLUMN Name6 TT_VARCHAR (20);

Command> DESCRIBE TypeDemo;

Table USER.TYPEDEMO:

  Columns:

    NAME                            CHAR (20)

    NAME2                           TT_CHAR (20)

    NAME3                           CHAR (10 CHAR)

    NAME4                           NCHAR (10)

    NAME5                           VARCHAR2 (20) INLINE

    NAME6                           TT_VARCHAR (20) INLINE

1 table found.

(primary key columns are indicated with *)

Command> #Insert SMITH followed by 5 spaces into all columns

Command> INSERT INTO TypeDemo VALUES

> ('SMITH     ', 'SMITH     ', 'SMITH     ', 'SMITH     ',

'SMITH     ', 'SMITH');

1 row inserted.

Command> # Expect 0; Nonpadded comparison semantics

Command> SELECT COUNT (*) FROM TypeDemo where Name5 = 'SMITH';

< 0 >

1 row found.

Command> # Expect 1; Blank-padded comparison semantics

Command> SELECT COUNT (*) FROM TypeDemo where Name6 = 'SMITH';

< 1 >

1 row found.

Command> # Expect 1; Nonpadded comparison semantics

Command> SELECT COUNT (*) FROM TypeDemo where Name5 > 'SMITH';

< 1 >

1 row found.

Command> # Expect 0; Blank-padded comparison semantics

Command> SELECT COUNT (*) FROM TypeDemo where Name6 > 'SMITH';

< 0 >

1 row found.

NVARCHAR2型

NVARCHAR2データ型は、2バイトのUnicode文字の可変長文字列です。NVARCHAR2列を定義する場合は、文字の最大数を定義します。各値は指定したとおりに格納されます。この値が列の最大長を超えることはできません。長さを指定する必要があります。


注意: NVARCHAR2型を使用すると、長さが0(ゼロ)の文字列はNULLとして解釈されます。TT_NVARCHAR型を使用すると、長さが0(ゼロ)の文字列は、NULL以外の有効な値となります。NVARCHAR2では非空白埋め比較セマンティクスが使用され、TT_NVARCHAR型では空白埋め比較セマンティクスが使用されます。TT_NVARCHAR型は下位互換用にサポートされています。

例1.5

次の例では、ALTERを使用して表TypeDemoを変更し、列Name7を追加します。データ型はNVARCHAR2です。

Command> ALTER TABLE TypeDemo ADD COLUMN Name7 NVARCHAR2 (20);

Command> DESCRIBE TypeDemo;

Table USER1.TYPEDEMO:

  Columns:

    NAME                            CHAR (20)

    NAME2                           TT_CHAR (20)

    NAME3                           CHAR (10 CHAR)

    NAME4                           NCHAR (10)

    NAME5                           VARCHAR2 (20) INLINE

    NAME6                           TT_VARCHAR (20) INLINE

    NAME7                           NVARCHAR2 (20) INLINE

1 table found.