sql - PostgreSQL 列 'foo' 不存在

标签 sql postgresql quoted-identifier

我有一个包含 20 个整数列和 1 个名为“foo”的文本列的表

如果我运行查询:

SELECT * from table_name where foo is NULL

我得到错误:

ERROR:  column "foo" does not exist

我已经检查过他的专栏确实存在。如果我做类似的事情:

SELECT * from table_name where count is NULL

结果输出将“foo”显示为其中一列.... 我猜我必须在查询中做一些特殊的事情,因为 foo 是一个文本列......

感谢帮助(POSTGRESQL 8.3)

最佳答案

您不小心创建了带有尾随空格的列名,并且 phpPGadmin 可能创建了带有双引号的列名:

create table your_table (
    "foo " -- ...
)

这会给你一个看起来到处都被称为 foo 的列,但你必须用双引号引起来并在你使用它时包含空格:

select ... from your_table where "foo " is not null

最佳做法是在 PostgreSQL 中使用小写的不带引号的列名。 phpPGadmin 中的某处应该有一个设置,告诉它不要引用标识符(例如表名和列名),但唉,我不使用 phpPGadmin,所以我不知道该设置在哪里(或者即使它存在)。

关于sql - PostgreSQL 列 'foo' 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10200769/

相关文章:

C# 将数据插入 SQL 数据库的最快方法

sql - 合并 2 个或更多行具有字符和其他具有货币

database - Postgresql 服务器上名为 postgres 的默认数据库

postgresql - 带有 Knex JS 和 RDS Postgres 的 AWS Lambda

sql - Postgres 列不存在

MySQL 基于连接表限制结果

返回 ID 和位置的 SQLite SELECT

ruby-on-rails - 在 postgresql 中查找和总结具有重叠记录的日期范围

sql - 未找到 Postgresql 列,但在描述中显示

sql - 如何在 Oracle 中为用户 + 表名组合使用带引号的标识符?