替换,修剪,然后为派生列添加前导0

时间:2013-04-03 15:53:25

标签: sql sql-server ssis

我有一个派生列,我从字段'BANK_REF'生成,我想删除任何破折号和空格,然后用前导0填充最多10个字符。以下句柄删除短划线和空格:

REPLACE(TRIM(BANK_REF), "-","")

以下添加前导0:

(DT_WSTR,6)REPLICATE("0",6 - LEN(BANK_REF)) + BANK_REF

结合我得到的两个:

(DT_WSTR,6)REPLICATE("0",6 - LEN(REPLACE(TRIM(BANK_REF), "-",""))) + REPLACE(TRIM(BANK_REF), "-","")

这实现了我所追求的目标,但是它似乎效率低下,因为我复制了替换/修剪部分。有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

select right(replicate("0", 10)+REPLACE(TRIM(BANK_REF), "-",""), 10)

我不确定你是否会注意到效率的差异。通常,SQL查询由I / O而不是内存操作支配。