2013-06-28 165 views
1

我在Microsoft SQL Server中的标量值函数下有一个名为Sync_CheckData的用户定义函数。它实际上做的是检查发行产品的数量和余额数量是一样的。如果出现问题,请返回ErrorStr nvarchar(255)查询返回SQL Server中字符串的子字符串

输出示例:

Balance Stock Error for Product ID : 4 

从上面的字符串,我想要得到4,使得后来我可以选择是通过使用WHERE条款(WHERE Product_ID = 4),给出错误的行。

可以使用哪种SQL函数来获取substring

+0

是它总是th e分号前的最后一位数字? – sgeddes

回答

3

试试这个

DECLARE @STR AS VARCHAR(1000) 
SELECT @STR='Balance Stock Error for Product ID : 4' 

SELECT substring(@STR,charINDEX(':',@STR)+1,LEN(@STR)-charINDEX(':',@STR)+1) 
+0

+1 - 最后不需要添加charindex - 它会相应地截断。这是一个小提琴演示:http://sqlfiddle.com/#!3/d41d8/16396 – sgeddes

+0

是的,你是对的! – tsohtan

+0

非常感谢你,tsohtan!我知道了。 –

1

我会使用RIGHT此:

declare @response varchar(100) 
set @response = 'Balance Stock Error for Product ID : 4' 

select right(@response, len(@response) - charindex(':', @response)) 

样品小提琴:http://sqlfiddle.com/#!3/d41d8/16397

+1

+1 - 我喜欢这个简化版本。 – sgeddes

+0

@ user2480596,谢谢!使用RIGHT()也适用于我的问题。 –

1

(从上述改造)试试这个

DECLARE @String VARCHAR(100) 

SET @String = 'Balance Stock Error for Product ID : 4' 

SELECT RIGHT(@string, CHARINDEX(':', REVERSE(@string))-2) 

OR 

SELECT RIGHT(@string,(LEN(@string)+1)-PATINDEX('%[0-9]%', @string))