2011-02-28 125 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