sql-server - SQL Server 2005 - 使用前导零格式化十进制数(包括带符号的小数!)

标签 sql-server t-sql format signed financial

我需要格式化数字,例如:-

1.99
21.34
1797.94
-300.36
-21.99
-2.31

使用 SQL-Server 2005 T-SQL 转换为格式掩码 0000.00。保留有符号整数和点后的小数。这将用于金融系统的文本文件导出。它要求它采用这种格式。

例如-

0001.99
0021.34
1794.94
-0300.36
-0021.99
-0002.31

以前,它是在 MS Access 中以 Format([Total],"0000.00") 的形式完成的,但 SQL-Server 没有此功能。

最佳答案

;WITH t(c) AS
(
SELECT 1.99 UNION ALL 
SELECT 21.34  UNION ALL 
SELECT 1797.94  UNION ALL 
SELECT -300.36  UNION ALL 
SELECT -21.99  UNION ALL 
SELECT -2.31 
)
SELECT  
     CASE WHEN SIGN(c) = 1 THEN '' 
          ELSE '-' 
     END + REPLACE(STR(ABS(c), 7, 2), ' ','0') 
FROM t

返回

0001.99
0021.34
1797.94
-0300.36
-0021.99
-0002.31

关于sql-server - SQL Server 2005 - 使用前导零格式化十进制数(包括带符号的小数!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5979204/

相关文章:

sql - 如何从表中删除重复添加的日志?

c# - 如何在 ASP.NET MVC 中的 View 上只显示 DATE 部分

mysql - 对于 202 到 203 之间的每个 manager_id,显示每个经理监督的员工数量

sql-server - Node 中的存储过程执行时间与 SQL Server Management Studio 中的存储过程执行时间存在巨大差异

c# - 处理存储过程

sql - 使用同一 select 语句中的 N 动态选择前 N 个

sql - 如何从 SQL Server 中的 SELECT 进行更新 - 如果选择返回多个项目(跟进问题 2334712)

c# - 在 C# 中调用标量函数

java - jsp中如何设置代码文本格式

c++ - 流的非持久格式化