在SQL Server中使用initial提取姓氏

时间:2015-10-30 02:32:44

标签: sql-server-2008

在SQL Server中,我有一个列NAME,其数据如下:

1, CHAN Tai Man
2, CHAN Ting Ting

我想要一个将NAME2提取到

的查询
1, CHAN T M
2, CHAN T T

您可能会发现只需要给定名称的首字母。我怎样才能在SQL Server 2008中实现这一目标?非常感谢你的温和帮助。

2 个答案:

答案 0 :(得分:1)

第一个首字母非常简单:

select left(name, charindex(' ', name) + 1)

第二个更难一点。我认为逻辑就像这样

select (left(name, charindex(' ', name) + 1) +
        substring(reverse(name), charindex(' ', reverse(name)) - 1, 1)
       )

您可能需要包含case语句,以确保名称有两个空格。

答案 1 :(得分:1)

像戈登说的那样,第一个很简单,这就是我对它的看法

DECLARE @table TABLE(id INT,name nvarchar(50))
Insert into @table
Values(1,'CHAN Tai Man')
Insert into @table
Values(2, 'CHAN Ting Ting')
select name
 , LEFT(name, (PATINDEX('%[ _-]%',name))) +substring(name,(PATINDEX('%[ _-]%',name)+1),1) +' '+substring(reverse(rtrim(substring(reverse(name), 1, charindex(' ', reverse(name))))),(PATINDEX('%[ _-]%',reverse(rtrim(substring(reverse(name), 1, charindex(' ', reverse(name))))))+1),1) as Fullname     
from @table