2011-02-28 216 views
0

上週五,我發佈了一個關於將單列值拆分爲多個列值的問題我在那裏發現了一些問題,現在在源表中我添加了一些新的功能並且看起來像是一些東西像這樣:將單個列值拆分爲多個列值的問題

例如:

Name 
---------------------  
abcd efgh  
ijk lmn  
opq asd j. asdjja  
asb (asdfas) asd  
asd  
john tronton III  
john bradly 0  
user 

,並期望輸出是這樣的:

first_name    last_name 
-----------   ------------------ 
abcd      efgh  
ijk      lmn 
opq      asdjja  
asb      asd  
asd      null  
john      tronton III  
john      bradly  
null      null (because user is not the name) 

需要查詢我n Select語句

中間名可以省略(不需要中間名)列已經創建並且需要從單個'Name'列中插入數據。

非常感謝,

Shahsra

+2

你有足夠的代表知道如何格式化你的問題 - 它的可讀性越高,回答的可能性就越大...... – 2011-02-28 17:09:41

+0

你能否告訴我你不明白的地方,以便我可以解釋你我的問題? – Shahsra 2011-02-28 17:18:04

回答

0
;WITH Split_Names (Name, xmlname) 
AS 
(
    SELECT 
    Name, 
    CONVERT(XML,'<Names><name>' 
    + REPLACE(Name,' ', '</name><name>') + '</name></Names>') AS xmlname 
     FROM somenames 
) 

SELECT  
xmlname.value('/Names[1]/name[1]','varchar(100)') AS first_name,  
xmlname.value('/Names[1]/name[2]','varchar(100)') AS last_name 
FROM Split_Names 

,並檢查下面的參考鏈接

http://jahaines.blogspot.in/2009/06/converting-delimited-string-of-values.html