我有一个小傻问题.我已经安装了Postgresql数据库服务器,但是当我运行查询时,列标识符没有引号存在问题.我不知道为什么需要标识符周围的引号.我的查询:
SELECT vc."CAR_ID" FROM "VEL_CAR" vc,"VEL_DRIVER" vd,"VEL_DRIVER_CAR" vdc WHERE vc."CAR_ID" = vdc."CAR_ID" and vdc."DRIVER_ID" = vd."DRIVER_ID";
我在Oracle DB中的做法是不使用“.所以在Oracle中:
SELECT vc.CAR_ID FROM VEL_CAR vc,VEL_DRIVER vd,VEL_DRIVER_CAR vdc WHERE vc.CAR_ID = vdc.CAR_ID and vdc.DRIVER_ID = vd.DRIVER_ID;
当我在Postgresql中没有引号运行此查询时,它会抛出有关语法的错误:
ERROR: column vc.car_id does not exist LINE 1: SELECT vc.CAR_ID
你知道为什么吗?
– 解决了 –
谢谢,现在我解决了这个问题!这是关于表创建.我使用pgAdminIII创建了表对象,并且我写了大写的表名和列名. pgAdminIII使用配额创建查询 – 因为名称是大写的.所以查询必须用配额写.
使用双引号创建表时,列和表名称将区分大小写.所以“car_id”与“CAR_ID”的名称不同
您需要在不使用双引号的情况下创建表,然后名称不区分大小写:car_id与CAR_ID相同(请注意缺少的引号!)
有关详细信息,请参阅手册
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
编辑:Oracle的行为方式完全相同.唯一的区别是Oracle以大写形式存储名称,而Postgres以小写形式存储它们.但使用引号时的行为是相同的.