如何格式化SQL Server中的列?

时间:2017-05-10 19:10:07

标签: sql sql-server

我有一个名为amount的列表。我希望以总共10位数的方式显示它。金额应该是正确的,最后两位显示分数。如果没有美分,则最后两位数应为00 例如: -

Name   Amount   New Column
---------------------------
aa      287.66  0000028766
bb       66     0000006600
cc     2475.1   0000247510
dd      214     0000021400

4 个答案:

答案 0 :(得分:3)

您可以使用

Format(CAST(Amount * 100 as INT), 'D10')

或者

Format(Amount * 100 , '0000000000')

只要你至少参加2012年。

答案 1 :(得分:2)

你可以在sql server中使用right函数,如下所示:

profileImageView

答案 2 :(得分:1)

您可以使用[REPLICATE()] [1]功能。

为了避免小数点,你应该在转换之前转换为整数作为varchar。

DECLARE @MyVal decimal(18,2) = 1252.23;
SELECT REPLICATE('0', 10 - LEN(CAST(CAST(@MyVal * 100 AS INT) as VARCHAR(10)))) 
       + CAST(CAST(@MyVal * 100 AS INT) as VARCHAR(10))
GO
| (No column name) |
| :--------------- |
| 0000125223       |

dbfiddle here

答案 3 :(得分:0)

由于长金额为字符串并且有空格。

main

结果

   DECLARE @T TABLE
            (
              NAME VARCHAR(10) ,
              Amount NVARCHAR(254)
            )

        INSERT  INTO @T
                ( NAME, Amount )
        VALUES  ( 'aa', N'     287.66' ),
                ( 'bb', N'      66  ' ),
                ( 'cc', N'    2475.1 ' ),
                ( 'dd', N'     214  ' );
        WITH    CTE
                  AS ( SELECT   name ,
                                amount ,
                                IIF(ISNUMERIC(REPLACE(Amount, ' ', '0')) = 1, CONVERT(INT, REPLACE(REPLACE(Amount,
                                                          '.', ''), ' ',
                                                          '0')), 0) AS NC
                       FROM     @T
                     )
            SELECT  name ,
                    amount ,
                    FORMAT(NC, '0000000000') [New COLUMN]
            FROM    CTE