Sql server 在SQL Server中搜索可能包含在不同段落中的句子

Sql server 在SQL Server中搜索可能包含在不同段落中的句子,sql-server,stored-procedures,string-matching,Sql Server,Stored Procedures,String Matching,实际上,这里我直接从存储过程将错误记录到数据库表(@error)。我的要求是我只需要记录一些错误,例如在获取价格值时只记录错误。因为我得到的任何错误都存储在@error变量中,我需要检查此错误段落是否包含“获取价格值时出错”之类的句子 SQL Server中是否有任何想法或逻辑,以便我检查@error是否在error desc段落中包含某些短语 例如:程序 ALTER PROCEDURE [dbo].a @b bigint, @c smallint, @d smallin

实际上,这里我直接从存储过程将错误记录到数据库表(
@error
)。我的要求是我只需要记录一些错误,例如在获取价格值时只记录错误。因为我得到的任何错误都存储在
@error
变量中,我需要检查此错误段落是否包含“获取价格值时出错”之类的句子

SQL Server中是否有任何想法或逻辑,以便我检查
@error
是否在error desc段落中包含某些短语

例如:程序

ALTER PROCEDURE [dbo].a
    @b bigint,
    @c smallint,
    @d smallint,
    @e varchar(50)
AS
BEGIN
    BEGIN TRY
        DECLARE @b varchar(4000),
                @Logger varchar(500),
                @b varchar(50),
                @d varchar(50) = NULL,
                @Mileage int = NULL,

        SELECT @b = x
        FROM tabl a (a,b,c)
        EXEC nmc x,y,z,m
    END TRY
    BEGIN CATCH
        SET @Error = ERROR_MESSAGE()
        SET @Logger = ERROR_PROCEDURE()

        EXEC [PRC_Save_DB_Exceptions] NULL, 'ERROR', @Logger, @UserName, 'Error while price and key', @Error
   END CATCH
END
与我在C#catch block中所做的功能相同,请看一看:

catch (Exception ex)
{
    var regex = new Regex(@".*or data does not exist.*");
    var text = "" + ex;

    bool exist = false;
    var texts = text.Split('.');

    foreach (var t in texts)
    {
        if (regex.IsMatch(t))
        {
            exist = true;
        }
    }

    if (!exist)
    {
        Logger.LogError(ConfigSettings.GetErrorMessage(006), ex);
    }
}

这真的很简单。您可以使用LIKE检查给定值是否存在于另一个字符串中


在dotnet代码中,也可以使用String.IndexOf轻松一点

这真的很简单。您可以使用LIKE检查给定值是否存在于另一个字符串中


在dotnet代码中,也可以使用String.IndexOf轻松一点

您对查询进行了太多的模糊处理,使其不再有效。您在这里至少声明了三次@b和两次@d。发布时,您的代码将永远无法编译。对于手头的问题,您可以简单地使用like查询变量。事实上,我的SP正在工作,但在发布时,我更改了变量(因为没有显示我的原始数据)别担心。你有什么想法吗?有人有这样的逻辑吗?你把你的查询弄得太模糊了,根本就不再有效了。您在这里至少声明了三次@b和两次@d。发布时,您的代码将永远无法编译。对于手头的问题,您可以简单地使用like查询变量。实际上,我有一个工作SP,但在发布时,我更改了变量(因为没有显示原始数据)。您有什么想法吗?有人有这个逻辑吗?
if @YourVariable like 'error while fetching price value%'
    EXEC [PRC_Save_DB_Exceptions] NULL, 'ERROR', @Logger, @UserName, 'Error while price and key', @Error