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

如何在Postgres的FORMAT函数中使用包含%的LIKE匹配模式?

在FORMAT()函数中嵌入LIKE语法的正确写法

问题分析

你当前的SQL代码FORMAT(' AND student_name LIKE %%L% ', CAST(jsnData->>'term' AS VARCHAR) )存在两处问题:

  • %%L%的写法会生成AND student_name LIKE 'xxx'%,右侧通配符%未被包含在单引号内,触发语法错误
  • 若需前后模糊匹配,缺少左侧的通配符%

解决方案

方法1:在参数中拼接通配符

将通配符与查询参数拼接后传入FORMAT函数,利用%L自动添加单引号:

FORMAT(' AND student_name LIKE %L ', '%' || CAST(jsnData->>'term' AS VARCHAR) || '%');

生成的SQL片段为AND student_name LIKE '%查询内容%',完全符合LIKE语法要求。

方法2:在FORMAT模板中处理通配符

通过双单引号转义,在模板中直接包含通配符:

FORMAT(' AND student_name LIKE ''%%%L%%'' ', CAST(jsnData->>'term' AS VARCHAR));
  • ''解析为单个'
  • %%解析为单个%
  • %L替换为带单引号的参数值
    最终同样生成正确的模糊匹配片段。

注意事项

  • 若仅需前缀/后缀模糊匹配,可调整通配符位置,比如只保留'%' || 参数或参数 || '%'
  • 使用%L能自动处理参数中的单引号转义,避免SQL注入风险,比直接字符串拼接更安全

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:21:27