问题描述
我对Oracle中的双引号列名称有疑问。我尝试以number_alphabets模式创建列名,但是这行不通。然后,我使用了双引号,并且能够使用此列名称创建表。当我选择时,列名用双引号引起来。 我已经在这里附加了脚本。
CREATE TABLE test
(
"100_title" VARCHAR2(200) NULL
)
SELECT * FROM test
当我确实选择结果集时,列名将为“ 100_title”,但我不希望在其中输入“”。有办法解决这个问题吗?
解决方法
摘自Database Object Names and Qualifiers文档:
- 未加引号的标识符不能是Oracle数据库保留字。带引号的标识符可以是保留字,尽管不建议这样做。
和
未带引号的标识符必须以数据库字符集中的字母字符开头。带引号的标识符可以以任何字符开头。
未加引号的标识符只能包含来自您的 数据库字符集和下划线(_)。数据库链接可以包含 句点(。)和“ at”符号(@)。
带引号的标识符也可以包含任何字符和标点符号 作为空格。但是,带引号或不带引号的标识符都不能包含 双引号或空字符(\ 0)。
所以你的问题:
当我确实选择结果集时,列名将为“ 100_title”,但我不希望在其中输入“”。有办法解决这个问题吗?
列标识符100_title
以非字母字符开头,因此到该文档的第6点,您必须在标识符上使用双引号。
列名的显示方式取决于您所使用的用户界面。在db<>fiddle上,列名显示为不带引号,并且在许多其他界面上也是如此。
如果您正在使用的用户界面仅输出带有引号的标识符,则可以将标识符从"100_title"
更改为title_100
,因为它以字母字符开头,并且仅包含字母数字和下划线字符,因此不需要用引号引起来。
简称为“否;请选择以字母开头的名称”
如果您使用以数字开头的名称,则每次提及列名称和时,都必须使用"
,必须正确区分大小写。您的列称为"100_title"
,而不是"100_Title"
或"100_TITLE"
将其命名为title_100
,那么您可以在任何情况下都使用它,即使您愿意,也可以使用TiTLe_100
,通常来说,您的生活会更轻松