2015-05-17 57 views
-1

我們有一個名爲DATA的表,其中包含一個類型爲varchar()的列。以下是該列中的值:如何根據SQL/SSIS中的類型在兩部分中拆分列值

Raj0014 
Dee0052ak 
000Pawan 
Rah454545ul 

我們需要單獨的int值和字符值,並插入到具有兩列另一個表名爲DATA1(ID INT,VARCHAR名(50))。

的結果應該是:

ID   Name 
0014   Raj 
0052   Deepak 
000   Pawan 
454545  Rahul 

回答

0

你可以寫上站腳本像T-SQL來分析你的價值觀,並挑選出的整數。使用Perl之類的外部腳本處理它們可能會更容易。

如果您已經有一個包含所有可能的id的表,您可以執行聯接以將它們從字符串值中刪除。

1

如果您不介意在SQL中執行此操作,您可以選擇該列兩次,並使用一組嵌套REPLACE函數將一列中的所有數字全部替換爲空,並將所有字母其他專欄沒有。它可能看起來有點雜亂,但它可能是開發時間和性能方面最快的選擇。與此類似,但重複它所有你需要的字母字符的擺脫:

REPLACE(REPLACE(data, 'a', ''), 'b', '') 

而第二列,再次重複所有你需要的數字字符的擺脫:

REPLACE(REPLACE(data, '0', ''), '1', '') 

如果您需要/希望在SSIS中執行此操作,可以在派生列表達式中使用嵌套替換想法。除此之外,一個腳本組件將是最明顯的想法,只要您適合使用C#或VB.NET,或與某人合作 - 然後您可以使用正則表達式。