我有一个表,它有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,所以我不在那个设置(即使它存在)。