Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:cast money和小数点后2、3或4位_Sql_Sql Server - Fatal编程技术网

SQL Server:cast money和小数点后2、3或4位

SQL Server:cast money和小数点后2、3或4位,sql,sql-server,Sql,Sql Server,我编写了一个查询,显示给定列的小数位数和最大小数位数。它可以是小数点后两位、三位或四位 我想把这个数字算作金钱,但小数点后的位数不会被减少到两位 select reverse(concat(replicate('0', case when @maxSpaces > 2 then @maxSpaces else 2 end - licznik), val)) value, replace(replace(convert(varchar, cast(reverse(concat

我编写了一个查询,显示给定列的小数位数和最大小数位数。它可以是小数点后两位、三位或四位

我想把这个数字算作金钱,但小数点后的位数不会被减少到两位

select
    reverse(concat(replicate('0', case when @maxSpaces > 2 then @maxSpaces else 2 end - licznik), val)) value,
    replace(replace(convert(varchar, cast(reverse(concat(replicate('0', @maxSpaces - licznik), val)) as money), 1), ',', ' '), '.', ',') as value_money
from 
    @TABval

我想要得到的格式是:


这里有两个变量,可以使用culture参数获得所需的输出

German

SELECT FORMAT(19998.018,'# ##0.000', 'de-de')

Swedish

SELECT FORMAT(19998.018,'# ##0.000', 'sv-se')

如果是2012+,请查看format()。也就是说,格式化应该在表示层中执行。例如,尝试选择格式(19998.018,#####0.000')@johncapelletti,它并没有那么简单。请注意逗号作为小数点。@JoakimDanielson格式允许区域性,但我想不出一种是空格和逗号。也许需要一点想象力和一个简单的替换。@johncapelletti,我在看文档,但设法错过了culturevalueu_money可以是nvarchar格式而不是money格式。例如1876321或23,00或3333206。小数位数取决于@maxSpaces