我有一个包含 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/