次の方法で共有


SQL データ型

各 DBMS は、独自の SQL 型を定義します。 各 ODBC ドライバーでは、関連付けられている DBMS で定義されている SQL データ型のみが公開されます。 ドライバーが DBMS SQL 型を ODBC で定義された SQL 型識別子にマップする方法と、ドライバーが DBMS SQL 型を独自のドライバー固有の SQL 型識別子にマップする方法に関する情報は、 SQLGetTypeInfo の呼び出しによって返されます。 ドライバーは、 SQLColAttributeSQLColumnsSQLDescribeColSQLDescribeParamSQLProcedureColumns、および SQLSpecialColumns の呼び出しを通じて、列とパラメーターのデータ型を記述するときにも SQL データ型を返します

Note

SQL データ型は、実装記述子のSQL_DESC_CONCISE_TYPE、SQL_DESC_TYPE、およびSQL_DESC_DATETIME_INTERVAL_CODEフィールドに含まれています。 SQL データ型の特性は、実装記述子のSQL_DESC_PRECISION、SQL_DESC_SCALE、SQL_DESC_LENGTH、およびSQL_DESC_OCTET_LENGTHフィールドに含まれています。 詳細については、この付録で後述する「 Data 型識別子と記述子 を参照してください。

特定のドライバーとデータ ソースでは、この付録で定義されているすべての SQL データ型が必ずしもサポートされるとは限りません。 SQL データ型に対するドライバーのサポートは、ドライバーが準拠している SQL-92 のレベルによって異なります。 ドライバーでサポートされている SQL-92 文法のレベルを判断するために、アプリケーションは SQLGetInfo をSQL_SQL_CONFORMANCE情報の種類で呼び出します。 さらに、特定のドライバーとデータ ソースは、ドライバー固有の追加の SQL データ型をサポートする場合があります。 ドライバーがサポートするデータ型を特定するために、アプリケーションは SQLGetTypeInfo を呼び出します。 ドライバー固有の SQL データ型の詳細については、ドライバーのドキュメントを参照してください。 特定のデータ ソースのデータ型の詳細については、そのデータ ソースのドキュメントを参照してください。

重要

この付録全体の表はガイドラインに過ぎません。SQL データ型の名前、範囲、および制限の一般的な使用方法を示します。 特定のデータ ソースでサポートされるデータ型は、一部のデータ型のみであり、サポートされるデータ型の特性は一覧と異なる場合があります。

次の表に、すべての SQL データ型の有効な SQL 型識別子を示します。 テーブルには、SQL-92 の対応するデータ型の名前と説明も一覧表示されます (存在する場合)。

SQL 型識別子[1] 一般的な SQL データ

type[2]
一般的な型の説明
SQL_CHAR CHAR(n) 固定文字列長の文字列 n
SQL_VARCHAR VARCHAR(n) 最大文字列長が nの可変長文字列。
SQL_LONGVARCHAR LONG VARCHAR 可変長文字データ。 最大長はデータ ソースに依存します。[9]
SQL_WCHAR WCHAR(n) 固定文字列長 n の Unicode 文字列
SQL_WVARCHAR VARWCHAR(n) 最大文字列長が n の Unicode 可変長文字列
SQL_WLONGVARCHAR LONGWVARCHAR Unicode 可変長文字データ。 最大長はデータ ソースに依存します
SQL_DECIMAL DECIMAL(p,s) 有効桁数が少なくとも p で、小数点以下桁数が s. (最大有効桁数はドライバー定義) (1 <= p< = 15) の符号付き、正確な数値 s<= p).[4]
SQL_NUMERIC NUMERIC(p,s) 有効桁数p小数点以下桁数の (1 <= p< = 15; の符号付き、正確な数値s<= p).[4]
SQL_SMALLINT SMALLINT 有効桁数 5 と小数点以下桁数 0 の正確な数値 (符号付き: -32,768 <= n<= 32,767、符号なし: 0 <= n<= 65,535)[3]。
SQL_INTEGER INTEGER 有効桁数 10 と小数点以下桁数 0 の正確な数値 (符号付き: -2[31] <= n<= 2[31] - 1、符号なし: 0 <= n<= 2[32] - 1)[3]。
SQL_REAL 実数 2 進精度 24 の符号付きの近似数値 (ゼロまたは絶対値 10[-38] ~ 10[38])。
SQL_FLOAT FLOAT(p) 少なくとも p の二項精度を持つ符号付きの近似数値。 (最大有効桁数はドライバー定義です)。[5]
SQL_DOUBLE DOUBLE PRECISION 2 進数の有効桁数が 53 の符号付きの近似数値 (ゼロまたは絶対値 10[-308] ~ 10[308])。
SQL_BIT BIT 単一ビットのバイナリ データ。[8]
SQL_TINYINT TINYINT 有効桁数 3 と小数点以下桁数 0 の正確な数値 (符号付き: -128 <= n<= 127、符号なし: 0 <= n<= 255)[3]。
SQL_BIGINT BIGINT 有効桁数が 19 (符号付きの場合) または 20 (符号なしの場合) および小数点以下桁数 0 (符号付き: -2[63] <= n<= 2[63] - 1、符号なし: 0 <= n<= 2[64] - 1)[3],[9]。
SQL_BINARY BINARY(n) 固定長のバイナリ データ n.[9]
SQL_VARBINARY VARBINARY(n) 最大長 nの可変長バイナリ データ。 最大値はユーザーによって設定されます。[9]
SQL_LONGVARBINARY LONG VARBINARY 可変長バイナリ データ。 最大長はデータ ソースに依存します。[9]
SQL_TYPE_DATE[6] DATE グレゴリオ暦の規則に準拠する年、月、日の各フィールド。 ( を参照してくださいグレゴリオ暦の制約、この付録の後半)。
SQL_TYPE_TIME[6] TIME(p) 時間、分、および 2 番目のフィールド。有効な値は 00 ~ 23、有効な値は 00 ~ 59、有効な値は 00 ~ 61 秒です。 有効桁数 p 秒の有効桁数を示します。
SQL_TYPE_TIMESTAMP[6] TIMESTAMP(p) 年、月、日、時、分、および 2 番目のフィールド。DATE データ型と TIME データ型に対して有効な値が定義されています。
SQL_TYPE_UTCDATETIME UTCDATETIME 年、月、日、時、分、秒、utchour、utcminute フィールド。 utchour フィールドと utcminute フィールドの有効桁数は 1/10 マイクロ秒です。
SQL_TYPE_UTCTIME UTCTIME Hour、minute、second、utchour、utcminute フィールド。 utchour フィールドと utcminute フィールドの有効桁数は 1/10 マイクロ秒です。
SQL_INTERVAL_MONTH[7] INTERVAL MONTH(p) 2 つの日付の間の月数。 p は、間隔の先頭の有効桁数です。
SQL_INTERVAL_YEAR[7] INTERVAL YEAR(p) 2 つの日付の間の年数。 p は、間隔の先頭の有効桁数です。
SQL_INTERVAL_YEAR_TO_MONTH[7] INTERVAL YEAR(p) TO MONTH 2つの日付の間の年と月の数。 p は、間隔の先頭の有効桁数です。
SQL_INTERVAL_DAY[7] INTERVAL DAY(p) 2 つの日付の間の日数。 p は、間隔の先頭の有効桁数です。
SQL_INTERVAL_HOUR[7] INTERVAL HOUR(p) 2 つの日付/時刻の間の時間数。 p は、間隔の先頭の有効桁数です。
SQL_INTERVAL_MINUTE[7] INTERVAL MINUTE(p) 2 つの日付/時刻の間の分数。 p は、間隔の先頭の有効桁数です。
SQL_INTERVAL_SECOND[7] INTERVAL SECOND(p,q) 2 つの日付/時刻の間の秒数。 p は間隔の先頭の有効桁数で、 q は間隔の秒の有効桁数です。
SQL_INTERVAL_DAY_TO_HOUR[7] INTERVAL DAY(p) TO HOUR 2 つの日付/時刻の間の日数/時間。 p は、間隔の先頭の有効桁数です。
SQL_INTERVAL_DAY_TO_MINUTE[7] INTERVAL DAY(p) TO MINUTE 2 つの日付/時刻間の日数/時間/分数。 p は、間隔の先頭の有効桁数です。
SQL_INTERVAL_DAY_TO_SECOND[7] INTERVAL DAY(p) TO SECOND(q) 2 つの日付/時刻間の日数/時間/分/秒。 p は間隔の先頭の有効桁数で、 q は間隔の秒の有効桁数です。
SQL_INTERVAL_HOUR_TO_MINUTE[7] INTERVAL HOUR(p) TO MINUTE 2 つの日付/時刻間の時間/分数。 p は、間隔の先頭の有効桁数です。
SQL_INTERVAL_HOUR_TO_SECOND[7] INTERVAL HOUR(p) TO SECOND(q) 2 つの日付/時刻間の時間/分/秒の数。 p は間隔の先頭の有効桁数で、 q は間隔の秒の有効桁数です。
SQL_INTERVAL_MINUTE_TO_SECOND[7] INTERVAL MINUTE(p) TO SECOND(q) 2 つの日付/時刻の間の分/秒の数。 p は間隔の先頭の有効桁数で、 q は間隔の秒の有効桁数です。
SQL_GUID GUID 固定長 GUID。

[1] これは、 SQLGetTypeInfo の呼び出しによってDATA_TYPE列に返される値です。

[2] これは、SQLGetTypeInfo の呼び出しによって NAME 列と CREATE PARAMS 列に返される値です。 NAME 列は、CHAR などの指定を返します。一方、CREATE PARAMS 列は、精度、小数点以下桁数、長さなどの作成パラメーターのコンマ区切りのリストを返します。

[3] アプリケーションは、 SQLGetTypeInfo または SQLColAttribute を使用して、結果セット内の特定のデータ型または特定の列が符号なしかどうかを判断します。

SQL_DECIMALデータ型とSQL_NUMERICデータ型の精度のみが異なります。 DECIMAL(p,s) の有効桁数は実装で定義された 10 進精度であり、 p 以下ですが、NUMERIC(p,s) の有効桁数は p とまったく同じです。

[5] 実装によっては、SQL_FLOATの精度は 24 または 53 のいずれかになります。24 の場合、SQL_FLOATデータ型はSQL_REALと同じです。53 の場合、SQL_FLOATデータ型はSQL_DOUBLEと同じです。

[6] ODBC 3.xでは、SQL の日付、時刻、およびタイムスタンプのデータ型はそれぞれSQL_TYPE_DATE、SQL_TYPE_TIME、およびSQL_TYPE_TIMESTAMPです。ODBC 2.x では、データ型はSQL_DATE、SQL_TIME、およびSQL_TIMESTAMP。

[7] 間隔 SQL データ型の詳細については、この付録の「 Interval データ型 」セクションを参照してください。

[8] SQL_BITデータ型は、SQL-92 の BIT 型とは異なる特性を持っています。

[9] このデータ型には、SQL-92 に対応するデータ型がありません。

このセクションでは、次の例を示します。