【问题标题】:Unquoted table names don't work [duplicate]不带引号的表名不起作用[重复]
【发布时间】:2013-04-02 17:45:33
【问题描述】:

我有一个问题。为什么我的 Oracle Express Edition 需要双引号表名:

不工作选择:

select * from table

工作选择:

select * from "table" 

感谢您的回答和帮助编辑我的帖子。我很困惑如何命名这个案例。

【问题讨论】:

  • 我知道英语不是您的母语,但您可以努力使问题易于阅读。你的具体问题是什么? select * from table 是否有效?
  • Yes select * from table 不起作用;但是 select * from "table" 是...
  • 这个答案应该对你有帮助:stackoverflow.com/questions/563090/…
  • 我试图让你的问题更清楚。但是下次不要忘记在这里发布错误消息。
  • @Ollie - 很好,解释比我的要好。

标签: oracle oracle10g


【解决方案1】:

仅当您使用的名称是关键字时才需要双引号名称(您的示例 - table 就是在这种情况下)或者如果您想包含特殊字符或非字母数字字符(例如"Multi word table name")。

" 中的名称区分大小写。

【讨论】:

    【解决方案2】:

    仅使用双引号: 从“表”中选择 *;

    它在没有引号的情况下工作,只有创建的名称是大写的。默认情况下,所有未加引号的名称都以大写形式存储。

    例如:

    CREATE TABLE "T1" (x number);
    
    -- That works:
    select * from "T1";
    
    -- that works too:
    select * from t1;
    
    -- that works too:
    select * from T1;
    

    TABLE - 是一个关键字。因此,即使您在 create 语句中使用大写名称,也可以不使用引号:

    CREATE TABLE "TABLE" (x number);
    
    select * from table;
    
    ORA-00906: missing left parenthesis
    

    【讨论】:

    • 我建议避免对数据库、表和列名使用关键字,这样问题就不会发生了:)
    • 正确 - 很好的推荐,但如果使用双引号则不违反命名规则。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2020-08-21
    • 2011-02-24
    • 2020-11-21
    • 1970-01-01
    相关资源
    最近更新 更多