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

SQL使用LIKE结合变量查询无结果问题求助

问题原因分析

你遇到的问题核心是变量使用方式错误:

  • 你把包含OR/AND逻辑的条件字符串赋值给@search后,直接用在book_text like @search里,此时SQL会把@search的整个内容当成LIKE的匹配模式——也就是它会去查找book_text字段里包含'%fishing%' or book_text like '%seaside%' and book_text like '%docks%'这段完整文本的记录,而非解析执行你写的OR/AND逻辑判断,自然查不到结果。
  • 手动编写的第二条语句中,SQL会正确解析OR和AND的逻辑关系,因此能返回正确结果。
解决方案

要实现动态拼接逻辑条件的需求,需要使用动态SQL执行拼接后的查询语句,示例如下:

set @search = 'book_text like ''%fishing%'' OR book_text like ''%seaside%'' AND book_text like  ''%docks%'''

-- 推荐用sp_executesql执行(更安全,支持参数化)
declare @sql nvarchar(max)
set @sql = 'select * from constituency where ' + @search
exec sp_executesql @sql

-- 简单场景也可以用EXEC
exec('select * from constituency where ' + @search)

注意:使用动态SQL时需警惕SQL注入风险,如果@search的内容来自用户输入,务必做参数化处理或严格校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:14:53