假设我在Mytable列Name中存储了一个类似“firstname lastname”的字符串。 那么我想在SQL中吸引名字和姓氏,如
select FirstName = substring(Name, ..), LastName=substring(Name, ...) from Mytable
如何解决此问题?
答案 0 :(得分:3)
您可以使用charindex
查找空间的位置:
select FirstName = substring(Name, 1, charindex(' ', Name)),
LastName = substring(Name, charindex(' ', Name) + 1, len(Name))
from MyTable
这充满了假设,例如:只有一个空间(如果我的名字是比利鲍勃哈里斯,或麦当娜怎么办?)
不是按照你要求的方式去做,而是使用PARSENAME可能会更好(正如另一条评论所说的那样!)。
答案 1 :(得分:3)
利用PARSENAME?
SELECT
PARSENAME(REPLACE(name, ' ', '.'), 2),
PARSENAME(REPLACE(name, ' ', '.'), 1)
FROM
MyTable;
编辑工作示例:
DECLARE @MyTable table (name varchar(25))
INSERT @MyTable
SELECT 'Joe Smith'
UNION SELECT 'Bill Jones'
UNION SELECT 'Billy Bob Braxton'
UNION SELECT 'Mark'
SELECT
PARSENAME(REPLACE(name, ' ', '.'), 2),
PARSENAME(REPLACE(name, ' ', '.'), 1)
FROM
@MyTable;
输出:
------ --------
Bill Jones
Bob Braxton
Joe Smith
NULL Mark
(4 row(s) affected)
答案 2 :(得分:-1)
您还可以考虑使用空格作为分隔符拆分字符串,然后将所选项目用作名字和姓氏