如何在查询中以特定方式动态输出格式化的数字?示例:1.234 可能需要为 1.2 或 1.234000

How can I output numbers formatted a specific way dynamically in a query? Example: 1.234 might need to be 1.2 or 1.234000

在数据库中,一行中有一个数字(rawresult)和一个数字格式(format)。我想将 rawresult 格式化为 format 所说的应该是单个查询的格式。这是一个已经存在的数据库,我们无法修改它。

Example 1: (rawresult = 1.254; format = 0.0), output should be 1.3
Example 2: (rawresult = 1.254; format = 0.00000), output should be 1.25400
Example 3: (rawresult = 10.254; format = 0.000), output should be 10.254

格式 字段可以为 null、0、0.0、小数点后 6 位或介于两者之间的任何值。我不知道如何使用单个 SQL 查询来执行此操作。有时,format 将为空,但我实际上可以处理那部分。基本上,如果 format 的小数位数少于 rawresult,我需要对其进行舍入,或者如果 format[=26],则添加尾随 0 =] 需要比 rawresult 多的小数位。

谢谢!

一种可能的方法是 FORMAT() 函数,但格式必须包含有效的 .NET Framework 格式字符串:

SELECT FORMAT([rawresult], [format]) AS [result]
FROM (VALUES
   (1.254,  NULL),
   (1.254,  '0.0'),
   (1.254,  '0.00000'), 
   (10.254, '0.000')
) v ([rawresult], [format])

结果:

result
-------
1.254
1.3
1.25400
10.254