|
このセクションでは、使用可能なデータ型に関するさまざまな動作およびキー情報について説明します。
LONGVARCHAR と LONGVARBINARY の制約も参照してください。
Pervasive PSQL では、1 つのテーブルで複数の LONGVARCHAR 列および LONGVARBINARY 列がサポートされるようになりました。データは、オフセットに応じてレコードの可変長部分に格納されます。データの可変長部分は、データの操作方法に応じて、データの列順とは異なるものにすることができます。次の例で考えてみましょう。
CREATE TABLE BlobDataTest ( Nbr UINT, // 固定レコード (型 14) Clob1 LONGVARCHAR, // 固定レコード (型 21) Clob2 LONGVARCHAR, // 固定レコード (型 21) Blob1 LONGVARBINARY, // 固定レコード (型 21) )
ディスク上では、物理レコードは通常次のように見えます。
列 Nbr を LONGVARCHAR 列に変更します。
これで、物理レコードはディスク上で次のように見えるようになりました。
[固定データ (Nbrheader, Clob1header, Clob2header, Blob1header)][ClobData1][ClobData2][BlobData1] [NbrClobData]
見たとおり、データの可変長部分は既存のデータの列順には入りません。
しかし、新しく挿入したレコードについては、データの可変長部分は既存のデータの列順に入ります。これは、すべての列にデータが割り当てられている(列がヌルでない)ことを前提としています。
[固定データ (Nbrheader, Clob1header, Clob2header, Blob1header)][NbrClobData][ClobData1][ClobData2] [BlobData1]
LONGVARCHAR と LONGVARBINARY の制約も参照してください。
LONGVARCHAR および LONGVARBINARY データ型には次の制約が適用されます。
DATETIME データ型は日付と時刻の値を表します。このデータ型は内部的に 4 バイトの整数として格納されます。最初の 4 バイトは基準日である 1900 年 1 月 1 日より前または後の日数を格納します。あとの 4 バイトは、深夜 0 時からのミリ秒数で表すその日の時刻を格納します。
DATETIME データ型はインデック付けすることができます。DATETIME の精度は 1/1000 秒です。
DATETIME はリレーショナル データ型のみです。対応するトランザクショナルデータ型(Btrieve データ型)はありません。
DATETIME に許可される書式は YYYY-MM-DD HH:MM:SS.mmm のみです (CONVERT 関数には DATETIME のミリ秒部分を切り捨てることができるオプション パラメーターがあります。「変換関数」の Convert 関数を参照してください)。
次の表に、DATETIME のデータ コンポーネントと有効な値を示します。
コンポーネント
|
有効な値
|
---|---|
YEAR(YYYY)
|
1753 ~ 9999
|
MONTH(MM)
|
01 から 12
|
DAY(DD)
|
01 から 31
|
HOUR(HH)
|
00 から 23
|
MONTH(MM)
|
00 から 59
|
SECOND(SS)
|
00 から 59
|
MILLISECOND(mmm)
|
000 から 999
|
次の表に、DATE、TIME、TIMESTAMP および DATETIME にほかのデータ型を加算または減算した結果のデータ型を示します。"X" 印の付けられたデータ型は、DATE、TIME、TIMESTAMP および DATETIME と互換性がありません。
CONVERT および CAST 関数は、次の表に示すように DATE、DATETIME、TIME および TIMESTAMP と使用できます。
メモ
CONVERT 関数には DATETIME のミリ秒部分を切り捨てることができるオプション パラメーターがあります。「変換関数」の Convert 関数を参照してください。
UNIQUEIDENTIFIER データ型は GUID(Globally Unique Identifier:グローバル一意識別子)として知られている 16 バイトのバイナリ値です。GUID は、行がほかの行と重複しない場合に有用です。
UNIQUEIDENTIFIER は、9.5 以上のファイル形式を必要とします。
UNIQUEIDENTIFIER の列またはローカル変数は、以下の方法で初期化できます。
'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
形式の引用符で囲んだ文字列を指定します。x
は 0-9 または A-F の範囲の 16 進数です。たとえば、'1129619D-772C-AAAB-B221-00FF00FF0099'
は有効な UNIQUEIDENTIFIER 値です。
引用符で囲んだ文字列を指定する場合、32 桁全部を指定する必要があります。データベース エンジンは部分文字列の埋め込み処理を行いません。
以下の比較演算子のみが UNIQUEIDENTIFIER に使用できます。
演算子
|
説明
|
---|---|
=
|
等しい
|
<> または !=
|
等しくない
|
<
|
より小さい
|
>
|
より大きい
|
<=
|
小さいかまたは等しい
|
>=
|
大きいかまたは等しい
|
IS NULL
|
値はヌルです
|
IS NOT NULL
|
値はヌルではありません
|
2 つの値のビット パターンの比較によっては並べ替えは行われません。
「SET」 ステートメントを使用して UNIQUEIDENTIFIER データ型の変数を宣言することができます。
DECLARE :Cust_ID UNIQUEIDENTIFIER DEFAULT NEWID()
DECLARE :ISO_ID uniqueidentifier
SET :ISO_ID = '1129619D-772C-AAAB-B221-00FF00FF0099'
UNIQUEIDENTIFER は CAST または CONVERT スカラー関数使用して以下のデータ型のいずれかに変換できます。
変換の例については、「変換関数」を参照してください。
Pervasive PSQLで無限を表すには、次の表のように、4 バイト(C 言語の float 型)または 8 バイト(C 言語の double 型)の形式で、16 進数または文字として表現できます。
|