我的专栏看起来像这样
Fullname
--------------------------
Joseph Davis Matthews
Leonardo Maser Davidson
Leo Garces S. Yu
我想将姓氏分开以方便搜索,所以我做了这个子字符串函数
RIGHT(dbo.Fullname, 40) as lastname
我的查询结果显示:
Lastname
---------------------------
Joseph Davis Matthews
Leonardo Maser Davidson
Leo Garces S. Yu
源列是char(40)
,是否有更简单的脚本将姓氏与列分开?
我正在使用SQL Server 2008
答案 0 :(得分:2)
正如@marc_s所提到的,你假设姓氏只是最后一个字。假设这是您想要的,您可以通过执行以下操作来获取字符串的最后一个单词:
declare @names as table
(
name varchar(40)
)
insert into @Names values ('Joseph Davis Matthews')
insert into @Names values ('Leonardo Maser Davidson')
insert into @Names values ('Leo Garces S. Yu')
SELECT RIGHT(name,
COALESCE(
NULLIF(
CHARINDEX(' ', REVERSE(name)) - 1,
-1),
LEN(name)))
FROM @names
但同样,它假设每个人姓氏只有一个字,这是一个不正确的假设