从sql中的特定字符中提取字符串

时间:2013-01-21 12:38:36

标签: sql sql-server

在我的SQL中,我有像

这样的字符串
Declare @Temp Varchar(Max) ='Pravin Gaonkar: 12 Jan 2013 11:56:21 : Hello World 1*Makarand Sawant: 12 Jan 2013 15:36:39 : Hello World 2*Makarand Sawant: 12 Jan 2013 21:21:51 : Hello World 3 *'

我使用'*'作为Seprator

我想从最后一个*字符到最后*字符检索最后一个字符串

在上面的示例中,结果字符串将是

Makarand Sawant: 12 Jan 2013 21:21:51 : Hello World 3 

我的查询

SELECT Reverse(Left(Reverse(@Temp), Charindex('*', Reverse(@Temp)) -1))

但它给了我错误 Invalid length parameter passed to the LEFT or SUBSTRING function.

数据库是SQL SERVER 2008

2 个答案:

答案 0 :(得分:2)

这假定在最终*之后没有字符,并且您总共至少有*个字符。

SELECT REVERSE(SUBSTRING(LTRIM(Reverse(@Temp)), 2, CHARINDEX('*', @Temp, 2)+1))

就个人而言,我会将其存储在单独的子句中并将其拆分为客户端代码。 Java和.net的字符串处理要比SQL Server好得多。

答案 1 :(得分:1)

另一种方法:在字符串中间需要一个*(你要分割字符串)以使用此代码。

Select replace(Right(yourstring,Len(yourstring) - charindex('*',yourstring)),'*','')
from yourtable
;

SQLFIDDLE DEMO

结果:

NEWVALUE
Namdev: 21 Jan 2013 17:41:51 : SLM call logg for ATM not coming
 inservice Docket No# W301211224 Cust JAGJEET