首页 > 解决方案 > ORA-00904 用于 Oracle 中的 ORDER BY

问题描述

我不明白这个查询出了什么问题:

    select last_name, first_name a from employees
order by "a";

输出是:

ORA-00904: "a": invalid identifier

但是,此查询工作并按 first_name 升序排序结果:

    select last_name, first_name a from employees
order by "A";

标签: oraclesql-order-byoracle-sqldeveloper

解决方案


默认情况下,Oracle 不区分大小写。

所以,当你说

select first_name a from employees

甲骨文认为这是

SELECT FIRST_NAME A FROM EMPLOYEES

但是当你开始使用“报价”时......

order by "a"

甲骨文认为这是

ORDER BY "a"

一个<>一个

如果您确保引用的对象也始终大写,这不是问题,这就是为什么您的“A”有效而您的“a”无效的原因。

我的建议 - 完全删除对象名称上的引号。

SELECT LAST_NAME,
       FIRST_NAME A
  FROM EMPLOYEES
 ORDER BY A;

在此处输入图像描述


推荐阅读