我正在寻找最简单的方法来分割名字和名字,以便修剪出中间的首字母。该字段的当前布局是[姓氏],[名字] [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
答案 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