我在将单列值拆分为多个列值时遇到问题。
关于这个:
Name
------------
Tom Howard
Michael Black
Wiliam Cruise
Bet Moor
我需要这样的输出:
first_name last_name
------------------------------
Tom Howard
Michael Black
Wiliam Cruise
Bet Moor
我必须从一列(名称)显示数据(last_name)。 谢谢
答案 0 :(得分:0)
根据您的版本,您可以使用PARSENAME()或Substring()
Declare @YourTable table (Name varchar(50))
Insert into @YourTable values
('Tom Howard'),
('Michael Black'),
('Wiliam Cruise'),
('Bet Moor')
Select Name
,first_name=PARSENAME(Replace(Name,' ','.'),2)
,last_name =PARSENAME(Replace(Name,' ','.'),1)
From @YourTable
-- OR --
Select Name
,first_name=Substring(Name,1,charindex(' ',name)-1)
,last_name =Substring(Name,charindex(' ',name)+1,50)
From @YourTable
返回
答案 1 :(得分:0)
您可以使用左右功能快速找到这些项目:
select Name, left(Name,charindex(' ',Name)-1) as first_name, right(Name,charindex(' ',Name)-1) as last_name from yourtable
只要在“名称”字段中有一个空格,这应该可以正常工作,如果您有多个空格,那么您将丢失这些空格之间的任何数据。