Sha*_*sra 22 sql t-sql sql-server string
我有一个问题是将单列值拆分为多个列值.
例如:
Name
------------
abcd efgh
ijk lmn opq
asd j. asdjja
asb (asdfas) asd
asd
Run Code Online (Sandbox Code Playgroud)
我需要这样的输出:
first_name last_name
----------------------------------
abcd efgh
ijk opq
asd asdjja
asb asd
asd null
Run Code Online (Sandbox Code Playgroud)
中间名可以省略(不需要中间名)列已经创建,需要插入该Name
列的数据.
Mar*_*ith 20
你的方法不会正确处理很多名字,但......
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)
END
FROM YourTable
Run Code Online (Sandbox Code Playgroud)
Ric*_*iwi 13
马丁的替代品
select LEFT(name, CHARINDEX(' ', name + ' ') -1),
STUFF(name, 1, Len(Name) +1- CHARINDEX(' ',Reverse(name)), '')
from somenames
Run Code Online (Sandbox Code Playgroud)
样本表
create table somenames (Name varchar(100))
insert somenames select 'abcd efgh'
insert somenames select 'ijk lmn opq'
insert somenames select 'asd j. asdjja'
insert somenames select 'asb (asdfas) asd'
insert somenames select 'asd'
insert somenames select ''
insert somenames select null
Run Code Online (Sandbox Code Playgroud)