从SQL Server中的字符串返回子字符串的查询
我在Microsoft SQL Server中的标量值函数下有一个名为Sync_CheckData的用户定义函数。它实际做的是检查发出产品的数量和余额数量是否相同。如果出现问题,则返回ErrorStr nvarchar255 输出示例:从SQL Server中的字符串返回子字符串的查询,sql,sql-server,substring,user-defined-functions,Sql,Sql Server,Substring,User Defined Functions,我在Microsoft SQL Server中的标量值函数下有一个名为Sync_CheckData的用户定义函数。它实际做的是检查发出产品的数量和余额数量是否相同。如果出现问题,则返回ErrorStr nvarchar255 输出示例: Balance Stock Error for Product ID : 4 从上面的字符串中,我想得到4,以便稍后我可以使用WHERE子句选择出错的行,其中Product_ID=4 我可以使用哪个SQL函数获取子字符串?试试这个 DECLARE @STR A
Balance Stock Error for Product ID : 4
从上面的字符串中,我想得到4,以便稍后我可以使用WHERE子句选择出错的行,其中Product_ID=4
我可以使用哪个SQL函数获取子字符串?试试这个
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)
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))
试试这个
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)
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))
我会用这个权利:
declare @response varchar(100)
set @response = 'Balance Stock Error for Product ID : 4'
select right(@response, len(@response) - charindex(':', @response))
提琴样本:从上面更改而来我将使用此权限:
declare @response varchar(100)
set @response = 'Balance Stock Error for Product ID : 4'
select right(@response, len(@response) - charindex(':', @response))
提琴样品:从上面改过来试试这个
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)
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))
试试这个
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)
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))
它是否总是分号前的最后一位?它是否总是分号前的最后一位?+1-不需要在末尾添加charindex-它将相应地截断。这里有一个小提琴演示:非常感谢你,卓坦!我明白了。+1-不需要在末尾添加charindex-它将相应地截断。这里有一个小提琴演示:非常感谢你,卓坦!我知道了。@user2480596,谢谢!使用RIGHT也可以解决我的问题。@user2480596,谢谢!使用正确的方法也能解决我的问题。