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

MySQL使用变量作为通配符字符串导致查询失效问题咨询

问题原因分析

你当前的问题出在concat函数里额外添加了双引号。硬编码的like "%grow%"实际是匹配包含grow的字符串,而concat('"%', @search, '%"')生成的结果是"%grow%"——这里的双引号会被当作匹配的一部分,数据库会去查找包含"grow"(带双引号)的字段值,自然查不到预期结果。

解决方案

以下是几种可行的解决方式:

  • 直接拼接通配符,去掉多余的双引号:

    set @search = "grow";
    select * from answer a where a.answer like concat('%', @search, '%'); 
    
  • 提前在变量中包含通配符,直接使用变量:

    set @search = "%grow%";
    select * from answer a where a.answer like @search; 
    
  • 若需要更灵活的动态查询,可使用预处理语句:

    set @search = "grow";
    set @sql = concat('select * from answer a where a.answer like "%', @search, '%"');
    prepare stmt from @sql;
    execute stmt;
    deallocate prepare stmt;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:50:29