小数未在查询结果中与当前语言环境一起显示

时间:2018-12-19 10:43:19

标签: sql sql-server sql-server-2012

我正在使用意大利语语言环境设置来处理SqlServer 2012数据库,并且在查询十进制字段时在SSMS中得到的结果有奇怪的行为

对于其他数字格式(例如,货币或浮点数),查询结果显示为带有意大利小数点分隔符(逗号“,”)的数字

对于小数,使用国际小数分隔符(点“。”)

这里有个例子:

select 
    cast(1234.567 as decimal(7, 3)) as decimalValue
    , cast(1234.567 as float) as floatValue
    , cast(1234.567 as money) as MoneyValue

结果:

decimalValue    floatValue  MoneyValue
1234.567        1234,567    1234,567

实际上我在查询表的小数字段,但是上面的查询结果是相同的

如何从SSMS的查询结果中获取使用意大利十进制分隔符格式化的十进制值? 我需要将结果复制并粘贴到Excel文件中(再次,使用意大利语语言环境进行设置),并将十进制值设置为“。”。在Excel中粘贴时识别为文本而不是数字

编辑: 刚刚找到了解决方法:

select cast(MyDecimalField as float) from MyTable

这似乎可以解决问题,但是我需要从“精确”数字类型强制转换为浮点数字类型,这很奇怪

1 个答案:

答案 0 :(得分:0)

You could try using the FORMAT function, which was introduced in 2012.

Some examples here:
https://stackoverflow.com/a/41358670/78522
and
https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-2017