2013-04-03 68 views
0

我有一個派生列,我從字段'BANK_REF'中生成,我想從中刪除任何破折號和空格,然後填充前導0直到10個字符。下面的句柄移除破折號的和空格:替換,修剪,然後爲派生列添加前導0 0

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

下添加的The前導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

你可以這樣來做:

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

我不知道你是否會注意到效率的差異。通常,SQL查詢主要是I/O而不是內存操作。

+0

SSIS不接受這個表達式。我假設你的意思是替代而不是repliace?無論哪種方式,它會變成'紅色',但不幸的是不會顯示錯誤信息。 – Joseph

+0

忽略我的最後一條消息。意識到它應該是重複的,並且0需要用雙引號。 – Joseph