我正在使用带有Go驱动程序的PostgreSQL。有时我需要查询不存在的字段,只是为了检查 - 也许数据库中存在某些内容。在查询之前,我无法判断该字段是否存在。例:where size=10 or length=10默认情况下,我收到一个错误,但是,该列可能存在,我可以得到一些结果。column "length" does not existsize是否有可能处理此类情况以返回可能的内容?编辑:是的,我可以先获取所有现有列。但是初始查询可能相当复杂,不是由我直接创建的,我只能修改它们。这意味着查询可以像前面的示例一样简单,也可以像下面这样复杂得多:WHERE size=10 OR (length=10 AND n='example') OR (c BETWEEN 1 and 5 AND p='Mars')如果缺少列和 - 这是否意味着我必须解析SQL,按(或其他运算符)拆分它,检查查询的每个部分,然后删除任何缺少列的部分 - 最后生成新的SQL查询?lengthcOR任何更简单的方法?
3 回答

守着星空守着你
TA贡献1799条经验 获得超8个赞
除了从可用列列表中构造SQL字符串之外,没有办法做你想做的事情,可以通过查询来获取。information_schema.columns
SQL 语句在执行之前进行分析,并且没有条件编译或短路,因此如果引用了不存在的列,则会出现错误。

holdtom
TA贡献1805条经验 获得超10个赞
为什么不先获得表中列的列表?喜欢这个
select column_name
from information_schema.columns
where table_name = 'table_name' and (column_name = 'size' or column_name = 'length');
结果将是存在的列。

汪汪一只猫
TA贡献1898条经验 获得超8个赞
我会尝试首先检查信息架构
“从INFORMATION_SCHEMA中选择column_name。table_name ='table_name';”
然后根据结果做查询
- 3 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消