【问题标题】:Query to return substring from string in SQL Server查询以从 SQL Server 中的字符串返回子字符串
【发布时间】:2013-06-28 02:55:22
【问题描述】:

我在 Microsoft SQL Server 的标量值函数下有一个名为 Sync_CheckData 的用户定义函数。它实际上做的是检查发出的产品数量和余额数量是否相同。如果有问题,返回ErrorStr nvarchar(255)

输出示例:

Balance Stock Error for Product ID : 4

从上面的字符串中,我想得到 4,以便稍后我可以使用 WHERE 子句 (WHERE Product_ID = 4) 选择出现错误的行。

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

【问题讨论】:

  • 分号前是否总是最后一位?

标签: sql sql-server substring user-defined-functions


【解决方案1】:

试试这个

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 -- 最后不需要添加 charindex -- 它将相应地截断。这是一个小提琴演示:sqlfiddle.com/#!3/d41d8/16396
  • 非常感谢您,tsohtan!我明白了。
【解决方案2】:

我会为此使用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(从上面更改)

【讨论】:

  • @user2480596,谢谢!使用 RIGHT() 也适用于我的问题。
【解决方案3】:

试试这个

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))

【讨论】:

    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    相关资源
    最近更新 更多