You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在指定存储过程中添加LIKE运算符实现模糊查询

解决ASP.NET表单存储过程的LIKE模糊搜索适配问题

嘿,我太懂这种继承别人代码又不能重写的无奈了!咱们直接针对你卡壳的Books字段条件来调整,既能实现模糊搜索,又完全适配原有存储过程的逻辑。

核心思路拆解

原来的(Books = @Books OR @Books IS NULL)是做精确匹配,同时保留了“参数为空则不筛选该字段”的逻辑。要改成关键词模糊搜索,只需要把精确匹配换成LIKE,并给用户输入的@Books参数前后加上通配符%,这样就能匹配包含关键词的任意内容,同时不破坏原有逻辑。

修改后的完整存储过程

Create Procedure spSearchAuthors 
    @FirstName nvarchar(100) = NULL, 
    @LastName nvarchar(100) = NULL, 
    @Books nvarchar(50) = NULL 
As 
Begin 
    Select FirstName, LastName, Books from Authors 
    where 
        (FirstName = @FirstName OR @FirstName IS NULL) 
        AND (LastName = @LastName OR @LastName IS NULL) 
        AND (Books LIKE '%' + @Books + '%' OR @Books IS NULL) 
End 
Go

细节说明

  • '%' + @Books + '%':这个写法会自动给用户输入的关键词前后加上通配符,比如用户输入“C#”,就会匹配所有书名里包含“C#”的记录(不管关键词在开头、中间还是结尾)。
  • 保留OR @Books IS NULL:确保当用户没有输入图书关键词时,这个条件不会对结果集做任何过滤,和原存储过程的行为完全一致,不会影响其他参数的正常使用。

如果担心用户输入的关键词里包含SQL通配符(比如%_)导致意外匹配,可以额外添加转义处理,但如果你的场景里用户只会输入普通关键词,上面的写法就足够好用啦。

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

火山引擎 最新活动