ORA-00972标识符的别名列名太长

时间:2010-06-21 14:34:46

标签: sql oracle alias

我的查询如下:

SELECT column as averyveryveryverylongalias (more than 30 characters)
   FROM Table_name

它返回错误 ORA-00972标识符太长,是否有任何提示使其工作而不缩短别名?

由于

6 个答案:

答案 0 :(得分:84)

不,在Oracle 12.2版之前,标识符的长度不得超过30个字符。请参阅the Oracle SQL Language Reference

但是,from version 12.2 they can be up to 128 bytes long.(注意:字节,而不是字符)。

答案 1 :(得分:11)

错误也是由引用和单个qutoes的奇怪处理引起的。要在查询中包含单引号,请使用 doubled 单引号。

这不起作用

select dbms_xmlgen.getxml("Select ....") XML from dual;

或者这个

select dbms_xmlgen.getxml('Select .. where something='red'..') XML from dual;

但这可行吗

select dbms_xmlgen.getxml('Select .. where something=''red''..') XML from dual;

答案 2 :(得分:4)

Oracle存储标识符名称的对象(例如,用户的表名存储在名为USER_TABLES的表中,用户的列名存储在名为USER_TAB_COLUMNS的表中)具有NAME列(例如USER_TABLES中的TABLE_NAME),大小为Varchar2(30)......并且它通过对象或标识符的所有系统表统一 -

 DBA_ALL_TABLES         ALL_ALL_TABLES        USER_ALL_TABLES
 DBA_PARTIAL_DROP_TABS  ALL_PARTIAL_DROP_TABS USER_PARTIAL_DROP_TABS
 DBA_PART_TABLES        ALL_PART_TABLES       USER_PART_TABLES 
 DBA_TABLES             ALL_TABLES            USER_TABLES           
 DBA_TABLESPACES        USER_TABLESPACES      TAB
 DBA_TAB_COLUMNS      ALL_TAB_COLUMNS         USER_TAB_COLUMNS 
 DBA_TAB_COLS         ALL_TAB_COLS            USER_TAB_COLS 
 DBA_TAB_COMMENTS     ALL_TAB_COMMENTS        USER_TAB_COMMENTS 
 DBA_TAB_HISTOGRAMS   ALL_TAB_HISTOGRAMS      USER_TAB_HISTOGRAMS 
 DBA_TAB_MODIFICATIONS  ALL_TAB_MODIFICATIONS USER_TAB_MODIFICATIONS 
 DBA_TAB_PARTITIONS   ALL_TAB_PARTITIONS      USER_TAB_PARTITIONS

答案 3 :(得分:3)

我使用Argos报告系统作为前端,而后者使用Oracle。我刚刚遇到这个错误,它是由一个在开头带有双引号的字符串和结尾的单引号引起的。用单个替换双引号解决了这个问题。

答案 4 :(得分:0)

如果您最近将springboot升级到1.4.3,则可能需要更改yml文件:

1.3中的yml:

jpa: 
  hibernate: 
    namingStrategy: org.hibernate.cfg.EJB3NamingStrategy

1.4.3中的yml:

jpa: 
  hibernate: 
    naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

答案 5 :(得分:-2)

正如其他人所提到的,Oracle SQL中的名称必须小于或等于30个字符。我想补充一点,这条规则不仅适用于表名,也适用于字段名。所以你有它。