精度
数字列或参数的精度指的是列或参数的数据类型使用的最大位数。非数字列或参数的精度通常是指列或参数的最大长度或定义长度。下表定义每个
SQL 数据类型的精度。
fSqlType | 精度 |
---|---|
SQL_CHAR SQL_VARCHAR | 列或参数的定义长度。例如,定义为 CHAR(10) 的列的精度为 10。 |
SQL_DECIMAL | 定义的最大位数。例如,定义为 DECIMAL(10,3) 的列的精度为 10。 |
SQL_SMALLINT a | 5 |
SQL_INTEGER a | 10 |
SQL_BLOB | 列或参数的定义长度。例如,定义为 BLOB(10) 的列的精度为 10。 |
SQL_DATE a | 10(yyyy-mm-dd 格式中的字符数)。 |
SQL_TIME a | 8(hh:mm:ss 格式中的字符数)。 |
SQL_TIMESTAMP | 26(TIMESTAMP 数据类型使用的“yyyy-mm-dd-hh.mm.ss.ffffff”格式中的字符数。) |
a:对于此数据类型,将忽略 SQLBindParameter() 的 cbParamDef 自变量。
小数位
数字列或参数的小数位指的是小数点右边的最大位数。下表定义每种 SQL 数据类型的小数位。
fSqlType | 小数位 |
---|---|
SQL_CHAR SQL_VARCHAR | 不适用。 |
SQL_DECIMAL | 小数点位置右边的定义位数。例如,定义为 DECIMAL(10, 3) 的列的小数位为 3。 |
SQL_SMALLINT SQL_INTEGER | 0 |
SQL_BLOB | 不适用。 |
SQL_DATE SQL_TIME | 不适用。 |
SQL_TIMESTAMP | 6(“yyyy-mm-dd-hh.mm.ss.ffffff”格式中的小数点右边的位数。) |
长度
列的长度是将数据转换至其缺省 C 数据类型时返回至应用程序的最大字节数。对于字符数据, 该长度不包括 null 终止字节。注意,列的长度可能与在数据源上存储数据所需的字节数不同。
下表定义每种 SQL 数据类型的长度。
fSqlType | 长度 |
---|---|
SQL_CHAR SQL_VARCHAR | 列的定义长度。例如,定义为 CHAR(10) 的列的长度为 10。 |
SQL_DECIMAL | 最大数字是位数加上二。因为这些数据类型是作为字符串返回的, 所以需要附加字符来表示附加位数(符号和小数点)。例如,定义为 DECIMAL(10,3) 的列的长度为 12。 |
SQL_SMALLINT | 2(2 字节)。 |
SQL_INTEGER | 4(4 字节)。 |
SQL_BLOB | 列的定义长度。例如,定义为 BLOB(10) 的列的长度为 10。 |
SQL_DATE SQL_TIME | 6(DATE_STRUCT 或 TIME_STRUCT 结构的大小)。 |
SQL_TIMESTAMP | 16(TIMESTAMP_STRUCT 结构的大小)。 |
显示大小
列的显示大小是以字符形式显示数据所需的最大字节数。下表定义每种 SQL 数据类型的显示大小。
fSqlType | 显示大小 |
---|---|
SQL_CHAR SQL_VARCHAR | 列的定义长度。例如,定义为 CHAR(10) 的列的显示大小为 10。 |
SQL_DECIMAL | 列的精度加上二(表示精度位的符号和小数点)。例如,定义为 DECIMAL(10,3) 的列的显示大小为 12。 |
SQL_SMALLINT | 6(一个符号加上 5 位)。 |
SQL_INTEGER | 11(一个符号加上 10 位)。 |
SQL_BLOB | 列的定义长度乘以 2(每个二进制字节用 2 位十六进制数字表示)。例如,定义为 BLOB(10) 的列的显示大小为 20。 |
SQL_DATE | 10(格式为 yyyy-mm-dd 的日期)。 |
SQL_TIME | 8(格式为 hh:mm:ss 的时间)。 |
SQL_TIMESTAMP | 26(格式为 yyyy-mm-dd-hh.mm.ss.ffffff 的时间戳记)。 |