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

Sql ORA-00972标识符的别名列名太长,sql,oracle,alias,Sql,Oracle,Alias,我有一个类似这样的问题: SELECT column as averyveryveryverylongalias (more than 30 characters) FROM Table_name 它返回错误ORA-00972标识符太长,是否有任何技巧可以让它在不缩短别名的情况下工作 谢谢否,在Oracle 12.2版之前,标识符的长度不允许超过30个字符。看 但是,(注意:字节,而不是字符)。Oracle存储标识符名称的对象(例如,用户的表名存储在名为user_TABLES的表中,用户

我有一个类似这样的问题:

SELECT column as averyveryveryverylongalias (more than 30 characters)
   FROM Table_name
它返回错误ORA-00972标识符太长,是否有任何技巧可以让它在不缩短别名的情况下工作


谢谢

否,在Oracle 12.2版之前,标识符的长度不允许超过30个字符。看


但是,(注意:字节,而不是字符)。

Oracle存储标识符名称的对象(例如,用户的表名存储在名为user_TABLES的表中,用户的列名存储在名为user_TAB_COLUMNS的表中)具有大小为Varchar2(30)的名称列(例如,user_TABLES中的表名)…并且它在所有对象或标识符的系统表中都是统一的--


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

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

这行不通

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;

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

如果您最近将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

出于好奇,有人知道这个限制是从哪里来的吗?为什么这个限制从来没有放松过?我真的很震惊,Oracle的百万美元付费客户中没有一个要求这样的功能(现在请不要误解我的意思,我很确定有一些深层次的技术原因,但仍然…)好吧,我本可以这么问的:我也遇到过这种情况。我有一个名为length=32的表列。但究竟为什么表列名允许超过30个字符,而标识符却不允许?这些限制应该齐头并进,对吗?怎么会出现这种情况?是超过30个字符还是超过30个字节?有一个奇怪的错误,如果最后一个字符是多字节的,标识符可能会略多于30字节。@JonHeller:我很确定它是30/32个字符标记改变了我的示例它应该是等于单引号单引号红色单引号单引号
jpa: 
  hibernate: 
    naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl