为了账号安全,请及时绑定邮箱和手机立即绑定

如何将单个列值拆分为多个列值?

/ 猿问

如何将单个列值拆分为多个列值?

守着一只汪 2019-08-19 17:32:09

如何将单个列值拆分为多个列值?

我有一个问题是将单列值拆分为多个列值。


例如:


Name

------------

abcd efgh

ijk lmn opq

asd j. asdjja

asb (asdfas) asd

asd

我需要这样的输出:


first_name             last_name

----------------------------------

abcd                     efgh

ijk                      opq

asd                      asdjja

asb                      asd

asd                      null

中间名可以省略(不需要中间名)列已经创建,需要插入该Name列的数据。


查看完整描述

3 回答

?
哔哔one

你的方法不会正确处理很多名字,但......

SELECT CASE
         WHEN name LIKE '% %' THEN LEFT(name, Charindex(' ', name) - 1)
         ELSE name       END,
       CASE
         WHEN name LIKE '% %' THEN RIGHT(name, Charindex(' ', Reverse(name)) - 1)
       ENDFROM   YourTable


查看完整回答
反对 回复 2019-08-19
?
幕布斯7119047

我有一个问题是将单列值拆分为多个列值。


例如:


Name

------------

abcd efgh

ijk lmn opq

asd j. asdjja

asb (asdfas) asd

asd

我需要这样的输出:


first_name             last_name

----------------------------------

abcd                     efgh

ijk                      opq

asd                      asdjja

asb                      asd

asd                      null

中间名可以省略(不需要中间名)列已经创建,需要插入该Name列的数据。


查看完整回答
反对 回复 2019-08-19
?
慕仰1329654
;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


查看完整回答
反对 回复 2019-08-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信