在SQL Server中,我有一个列NAME
,其数据如下:
1, CHAN Tai Man
2, CHAN Ting Ting
我想要一个将NAME2
提取到
1, CHAN T M
2, CHAN T T
您可能会发现只需要给定名称的首字母。我怎样才能在SQL Server 2008中实现这一目标?非常感谢你的温和帮助。
答案 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