十进制数字

进制 和数值数据类型的十进制数字定义为小数点右侧的最大位数或数据小数位数。 对于近似浮点数列或参数,小数位数未定义,因为小数点右侧的位数不是固定的。 对于包含秒分量的日期/时间或间隔数据,小数位数定义为数据秒分量中小数点右侧的位数。

对于SQL_DECIMAL和SQL_NUMERIC数据类型,最大刻度通常与最大精度相同。 但是,某些数据源对最大规模施加单独的限制。 为了确定数据类型允许的最小和最大缩放,应用程序调用 SQLGetTypeInfo

下表显示了为每个简洁的 SQL 数据类型定义的十进制数字。

SQL 类型 十进制数字
所有字符和二进制类型[a] 不适用
SQL_DECIMAL
SQL_NUMERIC
小数点右侧的已定义位数。 例如,定义为 NUMERIC (10,3) 的列的刻度为 3。 这可以是负数,以支持存储非常大的数字,而无需使用指数表示法;例如,“12000”可以存储为“12”,其刻度为 -3。
除 SQL_DECIMAL 和 SQL_NUMERIC[a] 之外的所有精确数值类型 0
所有近似数据类型[a] 不适用
SQL_TYPE_DATE,以及没有秒分量的所有间隔类型[a] 不适用
除SQL_TYPE_DATE以外的所有日期/时间类型,以及具有秒分量的所有间隔类型 小数点右侧的位数(以秒为单位) (秒的小数部分)。 此数字不能为负数。
SQL_GUID 不适用

[a] 对于此数据类型,将忽略 SQLBindParameterDecimalDigits 参数。

为十进制数字返回的值不对应于任何一个描述符字段中的值。 值可以来自SQL_DESC_SCALE或SQL_DESC_PRECISION字段,具体取决于数据类型,如下表所示。

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

十进制数字
所有字符和二进制类型 不适用
所有确切的数值类型 SCALE
SQL_BIT 不适用
所有近似数值类型 不适用
所有日期/时间类型 PRECISION
具有秒分量的所有间隔类型 PRECISION
没有秒分量的所有间隔类型 n/a