列サイズ

数値データ型の列 (またはパラメーター) サイズは、列またはパラメーターのデータ型で使用される最大桁数、またはデータの有効桁数として定義されます。 文字型の場合、これはデータの文字数です。バイナリ データ型の場合、列サイズはデータの長さ (バイト単位) として定義されます。 時刻、タイムスタンプ、およびすべての間隔データ型の場合、これはこのデータの文字表現の文字数です。 各簡潔な SQL データ型に対して定義されている列サイズを次の表に示します。

SQL 型識別子 列のサイズ
すべての文字型 [a],[b] 列またはパラメーターの文字で定義された列サイズまたは最大列サイズ (SQL_DESC_LENGTH記述子フィールドに含まれる)。 たとえば、CHAR(10) として定義された 1 バイト文字列の列サイズは 10 です。
SQL_DECIMAL SQL_NUMERIC 定義された桁数。 たとえば、NUMERIC(10,3) として定義された列の有効桁数は 10 です。
SQL_BIT[c] 1
SQL_TINYINT[c] 3
SQL_SMALLINT[c] 5
SQL_INTEGER[c] 10
SQL_BIGINT[c] 19 (署名されている場合) または 20 (署名されていない場合)
SQL_REAL[c] 7
SQL_FLOAT[c] 15
SQL_DOUBLE[c] 15
すべてのバイナリ型 [a],[b] 列またはパラメーターの定義済みまたは最大長 (バイト単位)。 たとえば、BINARY(10) として定義された列の長さは 10 です。
SQL_TYPE_DATE[c] 10 ( yyyy-mm-dd 形式の文字数)。
SQL_TYPE_TIME[c] 8 ( hh-mm-sss 形式の文字数)、または 9 + s ( hh:mm:ss[.fff...] 形式の文字数。 ここで、s は秒の有効桁数)。
SQL_TYPE_TIMESTAMP 16 ( yyyy-mm-dd hh:mm 形式の文字数)

19 ( yyyy-mm-ddhh:mm:ss 形式の 文字数)

or

20 + s ( yyyy-mm-dd hh:mm:ss[.fff...] 形式の文字数( s は秒の有効桁数)。
SQL_INTERVAL_SECOND ここで、p は間隔の先頭の有効桁数で、s は秒の有効桁数、p (s=0 の場合) または p+s+1 (s>0 の場合) です。d]
SQL_INTERVAL_DAY_TO_SECOND ここで、p は間隔の先頭の有効桁数で、s は秒の有効桁数、9 + p (s=0 の場合) または 10 +p+s (s>0 の場合) です。d]
SQL_INTERVAL_HOUR_TO_SECOND ここで、p は間隔の先頭の有効桁数で、s は秒の有効桁数、6 + p (s=0 の場合) または 7 + p+s (s>0 の場合) です。d]
SQL_INTERVAL_MINUTE_TO_SECOND ここで、p は間隔の先頭の有効桁数で、s は秒の有効桁数、3 + p (s=0 の場合) または 4 + p+s (s>0 の場合) です。d]
SQL_INTERVAL_YEAR SQL_INTERVAL_MONTH SQL_INTERVAL_DAY SQL_INTERVAL_HOUR SQL_INTERVAL_MINUTE pここで、p は間隔の先頭の有効桁数です。[d]
SQL_INTERVAL_YEAR_TO_MONTH SQL_INTERVAL_DAY_TO_HOUR 3 + p。ここで、 p は間隔の先頭の有効桁数です。[d]
SQL_INTERVAL_DAY_TO_MINUTE 6 + p。ここで、 p は間隔の先頭の有効桁数です。[d]
SQL_INTERVAL_HOUR_TO_MINUTE 3 + p。ここで、 p は間隔の先頭の有効桁数です。[d]
SQL_GUID 36 ( aaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 形式の文字数)

[a] ODBC 2.0 ドライバーで SQLSetParam を 呼び出す ODBC 1.0 アプリケーション、および ODBC 1.0 ドライバーで SQLBindParameter を呼び出す ODBC 2.0 アプリケーションの場合、*StrLen_or_IndPtr がSQL_LONGVARCHAR型またはSQL_LONGVARBINARY型にSQL_DATA_AT_EXEC場合、 ColumnSize は送信されるデータの合計長に設定する必要があります。 この表で定義されている有効桁数ではありません。

[b] ドライバーが変数型の列またはパラメーターの長さを判断できない場合は、SQL_NO_TOTALを返します。

[c] SQLBindParameterColumnSize 引数は、このデータ型では無視されます。

[d] 間隔データ型の列の長さに関する一般的な規則については、この付録で前述した 「Interval Data Type Length」を参照してください。

列 (またはパラメーター) サイズに対して返される値は、1 つの記述子フィールドの値に対応していません。 値は、次の表に示すように、データの種類に応じて、SQL_DESC_PRECISIONまたはSQL_DESC_LENGTH フィールドから取得できます。

SQL 型 に対応する記述子フィールド

列またはパラメーターのサイズ
すべての文字型とバイナリ型 LENGTH
すべての数値型 PRECISION
すべての datetime 型と interval 型 LENGTH
SQL_BIT LENGTH