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

yv5phkfx  于 2023-10-16  发布在  Oracle
关注(0)|答案(6)|浏览(244)

我有一个查询,如:

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

它返回错误ORA-00972 identifier is too long,有什么技巧可以让它工作而不使别名变短吗?

hmmo2u0o

hmmo2u0o1#

不可以,在Oracle 12.2版之前,标识符的长度不允许超过30个字符。请参阅Oracle SQL语言参考。
但是,from version 12.2 they can be up to 128 bytes long.(注:字节,而不是字符)。

fslejnso

fslejnso2#

这个错误也是由于对引号和单引号的古怪处理造成的。要在查询中包含单引号,请使用 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;
eanckbw9

eanckbw93#

Oracle存储标识符名称的对象(例如用户的表名存储在名为USER_TABLES的表中,用户的列名存储在名为USER_TAB_COLUMNS的表中),具有NAME列(例如,USER_TABLES中的TABLE_NAME)大小为Varchar 2(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
cngwdvgl

cngwdvgl4#

我使用Argos报告系统作为前端,Oracle在后端。我刚刚遇到了这个错误,它是由一个字符串在开始时有一个双引号,在结束时有一个单引号。将双引号替换为单引号解决了这个问题。

a6b3iqyw

a6b3iqyw5#

如果你最近升级了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
jw5wzhpr

jw5wzhpr6#

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

相关问题