列サイズ
数値データ型の列 (またはパラメーター) サイズは、列またはパラメーターのデータ型で使用される最大桁数、またはデータの有効桁数として定義されます。 文字型の場合、これはデータの文字数です。バイナリ データ型の場合、列サイズはデータの長さ (バイト単位) として定義されます。 時刻、タイムスタンプ、およびすべての間隔データ型の場合、これは、このデータの文字表現の文字数です。 各簡潔な 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 (h-mm-ss 形式の文字数)、または 9 + (h:mm:ss[.fff...] 形式の文字数。ここで、は秒の有効桁数です)。 |
SQL_TYPE_TIMESTAMP | 16 ( yyyy-mm-dd hh:mm 形式の文字数) 19 ( yyyy-mm-dd hh:mm:ss 形式の文字数) または 20 + (yyyy-mm-dd hh:mm:ss[.fff...] 形式の文字数。ここで、s は秒の有効桁数です)。 |
SQL_INTERVAL_SECOND | ここで p は、有効桁数と の間隔です 秒の有効桁数、 p ( s=0 の場合) または p+s+1 ( s>0)。d] |
SQL_INTERVAL_DAY_TO_SECOND | ここでpは、有効桁数との間隔です秒の有効桁数、9 +p (s=0 の場合) または 10 +p+s (>0)。d] |
SQL_INTERVAL_HOUR_TO_SECOND | ここでpは、有効桁数との間隔です秒の有効桁数、6 +p (s=0 の場合) または 7 +p+s (>0)。d] |
SQL_INTERVAL_MINUTE_TO_SECOND | ここで p は、有効桁数と の間隔です 秒の有効桁数、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-eeeeeeeee 形式の文字数) |
[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] このデータ型では、SQLBindParameter の ColumnSize 引数は無視されます。
[d] 間隔データ型の列長に関する一般的な規則については、この付録の「 Interval データ型の長さ」を参照してください。
列 (またはパラメーター) のサイズに対して返される値は、1 つの記述子フィールドの値に対応していません。 値は、次の表に示すように、データの種類に応じて、SQL_DESC_PRECISIONまたはSQL_DESC_LENGTHフィールドから取得できます。
SQL 型 | に対応する記述子フィールド 列またはパラメーターのサイズ |
---|---|
すべての文字型とバイナリ型 | LENGTH |
すべての数値型 | PRECISION |
すべての datetime 型と interval 型 | LENGTH |
SQL_BIT | LENGTH |