【问题标题】:Decimal not displayed with current locale in query result查询结果中当前语言环境不显示小数
【发布时间】:2018-12-19 20:46:38
【问题描述】:

我正在使用意大利语言环境设置的 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

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

【问题讨论】:

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


    【解决方案1】:

    【讨论】:

    • 我结束了使用您的解决方案,我认为这是一种解决方法;我更喜欢这个而不是使用cast as float 问题仍然存在:为什么 SQLServer 对十进制和其他数字格式有不同的默认格式?:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多