oracle – PostgreSQL – 没有引号的查询语法

前端之家收集整理的这篇文章主要介绍了oracle – PostgreSQL – 没有引号的查询语法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个小傻问题.我已经安装了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以小写形式存储它们.但使用引号时的行为是相同的.

猜你在找的Oracle相关文章