SQL:将Float字段强制转换为NVARCHAR

问题描述

我有一个带有一个浮点数字段的表:

CREATE TABLE IMPORTES (IMPORTE FLOAT)

然后我按照以下说明进行操作:

INSERT INTO IMPORTES (IMPORTE) VALUES (15226.25)

INSERT INTO IMPORTES (IMPORTE) VALUES (9999.25)

INSERT INTO IMPORTES (IMPORTE) VALUES (5226.25)

当我执行SELECT CAST(IMPORTE AS NVARCHAR(40))时,最大值取整,使得15226.25变成15226.3。这是为什么?如何制作Cast,但仍然获得相同的价值?

解决方法

根据CASTCONVERT的文档here,对于floatreal表达式,{{1}的style自变量}}默认为CONVERT,最多返回6位数字。显然,0实际上是在使用此默认值“在幕后”调用CAST。获得一致结果的唯一方法是,例如,如果将CONVERT的数据类型更改为IMPORTE,例如,如果您始终知道自己只有2位小数位。