我有一个派生列,我从字段'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), "-","")
这实现了我所追求的目标,但是它似乎效率低下,因为我复制了替换/修剪部分。有没有更好的方法来实现这一目标?
答案 0 :(得分:0)
你可以这样做:
select right(replicate("0", 10)+REPLACE(TRIM(BANK_REF), "-",""), 10)
我不确定你是否会注意到效率的差异。通常,SQL查询由I / O而不是内存操作支配。