Sql server 2008 在SQL Server中提取带有首字母的姓氏

Sql server 2008 在SQL Server中提取带有首字母的姓氏,sql-server-2008,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中实现这一点?非常感谢您的温柔帮助。第一个字母很简单: select left(name, charindex(' ', name) + 1) 第二个比较难。我认为逻辑是这样的 select (left

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

1, CHAN Tai Man
2, CHAN Ting Ting
我想要一个将
NAME2
提取到

1, CHAN T M
2, CHAN T T

正如您可能注意到的,只需要给定名称的首字母。如何在SQL Server 2008中实现这一点?非常感谢您的温柔帮助。

第一个字母很简单:

select left(name, charindex(' ', name) + 1)
第二个比较难。我认为逻辑是这样的

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

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

正如Gordon所说,第一个很简单,下面是我的看法

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