如何在SQL中修剪一个人的全名中间首字母?

时间:2010-09-27 21:24:27

标签: sql sql-server-2008

我正在寻找最简单的方法来分割名字和名字,以便修剪出中间的首字母。该字段的当前布局是[姓氏],[名字] [MI]。此外,中间的首字母并不总是存在。我目前的代码如下,我只是不确定如何在不编写案例陈述的情况下从名字中删除中间的首字母。

SELECT SUBSTRING(h.Name, CHARINDEX(',', h.Name, 0) + 2, LEN(h.Name) - CHARINDEX(',', h.Name, 0)), 0 as FirstName
    ,SUBSTRING(h.Name, 0, CHARINDEX(',', h.Name, 0)) as LastName
FROM Members

3 个答案:

答案 0 :(得分:4)

我在下面做了一些假设:

1 - 名字总是长于一个字符 2 - 中间的inital总是以空格开头 3 - 数据被修剪。

如果上述任何一项不成立,此代码将返回NULL。如果您的数据未被裁减,则可以在下面RTRIM的所有实例上使用@n来缓解。

declare @n as varchar(50)
set @n = 'Smith, John A'
select @n, 
    case 
        when SUBSTRING(@n, LEN(@n) - 1, 1) = ' ' 
        then SUBSTRING(@n, LEN(@n), 1) 
    end

答案 1 :(得分:1)

该系统的业务规则是什么?它会永远是:

last name first name space a possible middle initial

还可以存在哪些其他排列?

它总是 space letter ?因为那样你总是可以选择正确的三个字符,找一个空格和一个句点,然后删除三个字符。

答案 2 :(得分:-1)

select  REPLACE(firstName+ISNULL(middleName+' ','')+ISNULL( lastName +' ',''),'  ',' ') as 'name'  from  Contacts