【问题标题】:How to avoid " " in select statement in column name for column that has numberAlphabet pattern in Oracle?如何避免在 Oracle 中具有 numberAlphabet 模式的列的列名中的 select 语句中出现“”?
【发布时间】:2020-09-16 09:39:29
【问题描述】:

我对 Oracle 中的双引号列名有疑问。我尝试以 number_alphabets 模式创建列名,但这不起作用。然后我使用双引号,我能够用这个列名创建表。当我选择时,列名在双引号内。 我在这里附上了脚本。

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

当我选择时,在结果集中,列名将是“100_title”,但我不想在其中包含“”。有没有办法解决这个问题?

【问题讨论】:

    标签: oracle plsql create-table


    【解决方案1】:

    来自Database Object Names and Qualifiers 文档:

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

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

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

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

    所以你的问题:

    当我选择时,在结果集中,列名将是“100_title”,但我不想在其中包含“”。有没有办法解决这个问题?

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

    列名的显示方式取决于您使用的用户界面。在db<>fiddle 上,列名不带引号显示,这与许多其他界面相同。

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

    【讨论】:

      【解决方案2】:

      简短的版本是“不;选择一个以字母开头的名称”

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

      称它为title_100,那么你可以随便称呼它,甚至TiTLe_100,如果你喜欢的话,你的生活会更轻松

      【讨论】:

        猜你喜欢
        • 2013-07-30
        • 1970-01-01
        • 2017-04-29
        • 2014-10-23
        • 2018-06-05
        • 2020-04-10
        • 2014-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多