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

Retool中PostgreSQL动态列名查询报错问题求助

解决Retool中PostgreSQL动态列名带双引号的问题

问题原因

Retool默认会将字符串类型的变量作为SQL参数转义,给列名添加双引号。而PostgreSQL中带双引号的标识符严格区分大小写,若你的列名创建时未使用双引号(实际存储为小写),"first_name"会被识别为与first_name不同的标识符,导致查询异常。

可行解决方案

  • 直接拼接SQL片段(适用于下拉列表选项可控的场景)
    把列名和查询条件拼接成完整的SQL片段,避免Retool自动添加双引号:

    select * from accounts where {{ `${dropDownList.value} ilike '%${account_search_textInput.value}%'` }}
    

    注意:必须确保下拉列表的选项是预先定义的安全列名,防止SQL注入风险。

  • 使用PostgreSQL内置格式化函数
    利用pg_catalog.format函数动态构造查询,自动处理标识符和字符串的格式化:

    select * from accounts where pg_catalog.format('%I ilike %L', {{dropDownList.value}}, {{'%' + account_search_textInput.value + '%'}})::boolean
    

    其中%I用于格式化列名(按PostgreSQL规则处理引号),%L用于格式化字符串值,最后转换为布尔值让条件生效。

  • 切换到Raw SQL模式
    在Retool的查询编辑器中,将查询类型设置为Raw SQL,此时变量会直接替换为原始值,不会自动添加双引号。确保下拉列表的value是纯列名字符串(如first_name)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:06:45