我需要在SQL中将行(带有空格)解析为两个不同的列。这些行看起来是这样的:
FullName
约翰·梅尔
拉杰·詹宁斯
唐娜·弗拉耶
迈克尔·摩尔
因此,预期结果是:
名称
约翰
拉杰恩
唐娜
迈克尔
姓
梅耶尔
詹宁斯
弗莱
摩尔
我如何在SQL中做到这一点?
发布于 2014-09-04 07:10:30
如果您有一个要求,比如在第一个空格之前的名字应该是字符串,并且rest所有的内容都应该是“姓”,那么您可以将两个列更新为:
Update T
Set T.FirstName = Left(ltrim(rtrim(FullName)), CHARINDEX(' ',ltrim(rtrim(FullName))))
,T.LastName = Right(ltrim(rtrim(FullName)),len(FullName)- CHARINDEX(' ',ltrim(rtrim(FullName))))
From Test T
看看这里的演示..。
发布于 2014-09-04 06:52:21
您可以使用拆分的function.This函数创建。以下是一些例子:
http://ole.michelsen.dk/blog/split-string-to-table-using-transact-sql/
发布于 2014-09-04 06:57:25
如果只有一个空格/2名,并且您不需要满足像Vincent这样的名称,那么子字符串和charindex的组合就可以了。
select substring(fullname, 1, charindex(' ', fullname)) as name,
substring(fullname, charindex(' ', fullname)+1, len(fullname)-charindex(' ', fullname)) as surname
from tbl
https://stackoverflow.com/questions/25658884
复制相似问题