列大小

数值数据类型的列 (或参数) 大小定义为列或参数的数据类型使用的最大位数或数据的精度。 对于字符类型,这是数据的长度(以字符为单位);对于二进制数据类型,列大小定义为数据的长度(以字节为单位)。 对于时间、时间戳和所有间隔数据类型,这是此数据的字符表示形式中的字符数。 下表显示了为每个简明 SQL 数据类型定义的列大小。

SQL 类型标识符 列大小
所有字符类型[a],[b] 列或参数 (的定义或最大列大小(以字符为单位),包含在SQL_DESC_LENGTH描述符字段) 。 例如,定义为 CHAR (10) 的单字节字符列的列大小为 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 (yyy-mm-dd 格式) 的字符数。
SQL_TYPE_TIME[c] 8 (hh-mm-ss 格式的字符数) ,或 9 + s (hh:mm:ss[.fff...] 格式的字符数,其中 s 是秒精度) 。
SQL_TYPE_TIMESTAMP 16 (yyyy-mm-dd hh:mm 格式的字符数)

19 (yyy-mm-ddhh:mm:ss 格式的字符数)



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 是秒精度,如果 s=0) 则为 9+p (;如果 s 0) ,则>为 10+p+ s (。[d]
SQL_INTERVAL_HOUR_TO_SECOND 其中 p 是间隔前导精度,s 是秒精度,如果 s=0) 则为 6+p (;如果>s 0) ,则为 7+p+ s (。d]
SQL_INTERVAL_MINUTE_TO_SECOND 其中 p 是间隔前导精度,s 是秒精度,如果 s=0) 则为 3+p (;如果 s 0) ,则>为 4+p+ s (。[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 (aaaaaaaa-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] 有关间隔数据类型中的列长度的一般规则,请参阅本附录前面的 间隔数据类型长度

为列 (或参数) 大小返回的值不对应于任何一个描述符字段中的值。 值可以来自SQL_DESC_PRECISION或SQL_DESC_LENGTH字段,具体取决于数据类型,如下表所示。

SQL 类型 对应于 的描述符字段

列或参数大小
所有字符和二进制类型 LENGTH
所有数值类型 PRECISION
所有日期时间和间隔类型 LENGTH
SQL_BIT LENGTH