填充零并删除tsql中的逗号,小数和短划线

时间:2016-03-28 15:15:09

标签: tsql

我有一个金额字段和佣金字段,我需要删除逗号:,小数点:.破折号:-和百分号:%

我尝试过复制,格式化,替换和填充,

  • right ('000000000')
  • right('000000000') + rtrim(field), len#)
  • RTRIM(replicate('0', 9 - len(field)) + REPLACE(REPLACE(REPLACE(cast(field as varchar), ',', ''), '.',''), '-', ''))
  • RTRIM(复制('0',9 - len(t.Commission_Amount))+ REPLACE(REPLACE(cast(t.Commission_Amount as varchar(9)),',',''),'。' ,''),' - ',''))

但我从来没有得到我想要的结果。当我使用替换时,它会替换逗号,破折号或%,但会缩短字段,并且不会用零填充左侧。我知道它可能就在我面前我只需要一些清晰度。

  • 00-126.470012647
  • 的形式出现
  • 0.0000000000
  • 的形式出现
  • 000126.4700012647
  • 的形式出现

2 个答案:

答案 0 :(得分:1)

试试这个:

创建样本表

DECLARE @Table as table (
    field varchar(15)
)

填充样本表

INSERT INTO @Table VALUES 
('00-126.47'), 
('0.00'),
('000126.47'),
('00033%2.422')

选择

SELECT  field As before, 
        RIGHT(REPLICATE('0', 9) + 
            REPLACE(
                REPLACE(
                    REPLACE(
                        REPLACE(field, '-', '')
                    , '.', '')
                , ',', '')
            , '%', '')
        , 9) As [After]
FROM @Table 

结果:

before          After
--------------- ---------
00-126.47       000012647
0.00            000000000
000126.47       000012647
00033%2.422     000332422

答案 1 :(得分:0)

这解决了我的问题;

RIGHT(REPLICATE('0',9)+ REPLACE(REPLACE(REPLACE(REPLACE(field,' - ',''),'。',''),',',''),'% ',''),9)作为[After]