You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server存储过程中LIKE搭配%通配符与参数的写法问题

SQL Server 存储过程LIKE模糊匹配写法修正

错误原因

你原有WHERE子句语法报错的核心问题:LIKE语法使用的通配符%属于字符串常量,必须用单引号包裹,直接裸写在CONCAT参数中会被SQL Server判定为非法语法。

正确实现

你需要匹配SlotValue字段符合「任意内容 + // + @module参数值 + 任意内容」格式的记录,修正后的完整存储过程代码如下:

CREATE PROCEDURE [dbo].[ModuleReferenceCount]
    @module     nvarchar(255)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT COUNT([dbo].[Slots].[ObjectID])
    FROM [Slots]
    WHERE [dbo].[Slots].[SlotValue] LIKE CONCAT('%//', @module, '%')
END
GO

该写法可以正常命中你举例的abc//module1.xyz、lmn//module22//qrs这类符合规则的记录。

特殊场景兼容

如果传入的@module参数值本身可能包含%、_、[这类LIKE特殊通配符,会出现匹配结果不符合预期的问题,可以增加转义逻辑处理:

CREATE PROCEDURE [dbo].[ModuleReferenceCount]
    @module     nvarchar(255)
AS
BEGIN
    SET NOCOUNT ON;
    -- 转义参数内的LIKE特殊字符
    SET @module = REPLACE(REPLACE(REPLACE(@module, '[', '[[]'), '%', '[%]'), '_', '[_]');

    SELECT COUNT([dbo].[Slots].[ObjectID])
    FROM [Slots]
    WHERE [dbo].[Slots].[SlotValue] LIKE CONCAT('%//', @module, '%') ESCAPE '['
END
GO

内容的提问来源于stack exchange,提问作者G_Zir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:30:16