我在Microsoft SQL Server中的标量值函数下有一个名为Sync_CheckData
的用户定义函数。实际做的是检查已发布产品的数量和余额数量是否相同。如果出现问题,请返回ErrorStr nvarchar(255)
。
输出示例:
Balance Stock Error for Product ID : 4
从上面的字符串中,我想获得4,以便稍后我可以使用WHERE
子句(WHERE Product_ID = 4
)来选择产生错误的行。
我可以使用哪个SQL函数来获取substring
?
答案 0 :(得分: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)
答案 1 :(得分: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(从上面改变)
答案 2 :(得分: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))