在我的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
答案 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
;
结果:
NEWVALUE
Namdev: 21 Jan 2013 17:41:51 : SLM call logg for ATM not coming
inservice Docket No# W301211224 Cust JAGJEET