在Oracle中具有numberAlphabet模式的列的列名的select语句中,如何避免使用“”?

问题描述

我对Oracle中的双引号列名称有疑问。我尝试以number_alphabets模式创建列名,但是这行不通。然后,我使用了双引号,并且能够使用此列名称创建表。当我选择时,列名用双引号引起来。 我已经在这里附加了脚本。

CREATE TABLE test 
(       
  "100_title"     VARCHAR2(200) NULL  
)     
            
SELECT * FROM test 

当我确实选择结果集时,列名将为“ 100_title”,但我不希望在其中输入“”。有办法解决这个问题吗?

解决方法

摘自Database Object Names and Qualifiers文档:

  1. 未加引号的标识符不能是Oracle数据库保留字。带引号的标识符可以是保留字,尽管不建议这样做。

  1. 未带引号的标识符必须以数据库字符集中的字母字符开头。带引号的标识符可以以任何字符开头。

  2. 未加引号的标识符只能包含来自您的 数据库字符集和下划线(_)。数据库链接可以包含 句点(。)和“ at”符号(@)。

    带引号的标识符也可以包含任何字符和标点符号 作为空格。但是,带引号或不带引号的标识符都不能包含 双引号或空字符(\ 0)。

所以你的问题:

当我确实选择结果集时,列名将为“ 100_title”,但我不希望在其中输入“”。有办法解决这个问题吗?

列标识符100_title以非字母字符开头,因此到该文档的第6点,您必须在标识符上使用双引号。

列名的显示方式取决于您所使用的用户界面。在db<>fiddle上,列名显示为不带引号,并且在许多其他界面上也是如此。

如果您正在使用的用户界面仅输出带有引号的标识符,则可以将标识符从"100_title"更改为title_100,因为它以字母字符开头,并且仅包含字母数字和下划线字符,因此不需要用引号引起来。

,

简称为“否;请选择以字母开头的名称”

如果您使用以数字开头的名称,则每次提及列名称​​和时,都必须使用",必须正确区分大小写。您的列称为"100_title",而不是"100_Title""100_TITLE"

将其命名为title_100,那么您可以在任何情况下都使用它,即使您愿意,也可以使用TiTLe_100,通常来说,您的生活会更轻松