如何从person';SQL中的全名是什么?
我正在寻找一种最简单的方法,将名字和姓氏分开,并去掉中间的首字母。该字段的当前布局为[姓氏][名][MI]。而且,中间的首字母并不总是存在。下面是我当前的代码,我只是不知道如何在不写case语句的情况下删掉名字中间的首字母如何从person';SQL中的全名是什么?,sql,sql-server-2008,Sql,Sql Server 2008,我正在寻找一种最简单的方法,将名字和姓氏分开,并去掉中间的首字母。该字段的当前布局为[姓氏][名][MI]。而且,中间的首字母并不总是存在。下面是我当前的代码,我只是不知道如何在不写case语句的情况下删掉名字中间的首字母 SELECT SUBSTRING(h.Name, CHARINDEX(',', h.Name, 0) + 2, LEN(h.Name) - CHARINDEX(',', h.Name, 0)), 0 as FirstName ,SUBSTRING(h.Name, 0,
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
我做了以下一些假设: 1-名字总是超过一个字符。
2-中间初始值前面总是有空格。
3-数据被修剪 如果上述任何一项不正确,此代码将返回
NULL
。如果您的数据未被修剪,您可以在下面的@n
的所有实例上使用RTRIM
,以减轻影响
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
这个系统的业务规则是什么?它将永远是:
姓
,名
空格可能的中间首字母
还有什么其他排列方式可以存在
它永远是空格吗?因为这样你就可以选择正确的三个字符,寻找空格和句点,然后删除三个字符。我觉得重要的是要指出:无论商业决策如何。是的,你的假设是正确的,尽管我一直在寻找一种使用案例陈述的方法,但这种方法确实有效,我想不出任何其他方法。谢谢
select REPLACE(firstName+ISNULL(middleName+' ','')+ISNULL( lastName +' ',''),' ',' ') as 'name' from Contacts