我正在使用意大利语语言环境设置来处理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
这似乎可以解决问题,但是我需要从“精确”数字类型强制转换为浮点数字类型,这很奇怪
答案 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