如何在查询中以特定方式动态输出格式化的数字?示例: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
在数据库中,一行中有一个数字(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