将名称与单个列分隔开

时间:2012-07-25 05:28:24

标签: sql sql-server-2008

我的专栏看起来像这样

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

1 个答案:

答案 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

但同样,它假设每个人姓氏只有一个字,这是一个不正确的假设