我正在尝试仅在第一个空格中拆分MSSQL中的字符串 考虑到这里可以有两个全名的空格,我不知道该怎么做。
示例:
Henk de Vries
我想把它分成:
Firstname: Henk
Lastname: de Vries
答案 0 :(得分:3)
尝试使用Patindex
create table #t(name varchar(20))
insert into #t values('Henk de Vries')
select substring(name,1,PATINDEX('% %',name)) as First_name,SUBSTRING(name,patindex('% %',name),LEN(name)) as Last_Name from #t
这是通过t-clausen.dk 在评论中解决的。
select left(name,charindex(' ',name+' ')) as First_Name,substring(name,charindex(' ',name+' '),len(name)) as Last_Name from #t
答案 1 :(得分:1)
这是一个将这个答案与所选答案进行比较的例子,请注意,当只有一个名字时,所选答案会有错误(我知道大多数人都有名字,但这不是一个完美的世界):
SELECT
LEFT(name, charindex(char(32), name + char(32))) Firstname,
STUFF(name, 1, charindex(char(32), name), '') LastName,
-- included example from accepted answer
substring(name,1,PATINDEX('% %',name)) as First_name,
SUBSTRING(name,patindex('% %',name),LEN(name)) as Last_Name
FROM (values('Henk de Vries'), ('Thomas')) x(name)
结果
Firstname LastName First_name Last_Name
Henk de Vries Henk de Vries
Thomas Thoma
答案 2 :(得分:0)
使用CHARINDEX
查找第一个空格,然后使用LEFT
和RIGHT
来提取用户的名字和姓氏
left(username, charindex(' ', username)-1) firstname,
right(username, (len(username)-charindex(' ', username))) lastname
答案 3 :(得分:0)
DECLARE @Name VARCHAR(50) = 'Henk de Vries'
SELECT SUBSTRING(@Name, 1, CHARINDEX(' ', @Name) - 1) AS [First Name],
SUBSTRING(@Name, CHARINDEX(' ', @Name) + 1, LEN(@Name)) AS [Last Name]