2017-04-12 63 views
0

后特定字符的字符串,我在SQL Server工作室经理2014如何分割在SQL Server

工作,我发现了这一点,它是有点接近我想要的东西,但还不太完善。

Col2 = RIGHT([HospCode],LEN([HospCode])-CHARINDEX('.',[HospCode])) 

我的数据是这样的

ABC.FRED.123
ABC.STEVE
ABC.SUSAN
ABC.TED.4456
ABC.WILL
ABC.TABITHA.11
ABC.TODD

我想摆脱“ABC”。和“.xxx”号码部分如果它存在,只能看到名称部分。所以我想我的最终输出是这样的:

FRED
史蒂夫
SUSAN
TED
WILL
TABITHA
TODD

任何人都可以帮助?先谢谢你!

回答

2

一个简单的方法是使用PARSENAME()反向()(或两个)

由于名称将永远是两个或三个第二,我们扭转字符串,应用PARSENAME( ...,2),然后反转结果。

Declare @YourTable table (HospCode varchar(50)) 
Insert Into @YourTable values 
('ABC.FRED.123'), 
('ABC.STEVE'), 
('ABC.SUSAN'), 
('ABC.TED.4456'), 
('ABC.WILL'), 
('ABC.TABITHA.11'), 
('ABC.TODD') 

Select A.* 
     ,Reverse(ParseName(Reverse(HospCode),2)) 
From @YourTable A 

返回

HospCode  (No column name) 
ABC.FRED.123 FRED 
ABC.STEVE  STEVE 
ABC.SUSAN  SUSAN 
ABC.TED.4456 TED 
ABC.WILL  WILL 
ABC.TABITHA.11 TABITHA 
ABC.TODD  TODD 
+0

约翰, 你摇滚我的男人! NI今天花了4个小时搞定了这个!我不知道这里发生了什么,所以我会阅读Parse函数。 真的非常感谢 – DoNotLikeIT

+0

@ DoNotLikeIT对它很有帮助。我会添加更多的上下文 –