【问题标题】:The different between TABLE_NAME vs "TABLE_NAME" in Oracle?Oracle 中 TABLE_NAME 与“TABLE_NAME”之间的区别?
【发布时间】:2014-11-21 12:04:07
【问题描述】:

我是一个非常新的 Oracle SQL 用户,但遇到了问题。

如果我使用诸如

之类的代码创建表
create table TBL_NAME...

之后我可以通过

获取数据

从 TBL_NAME 中选择 *;

但是,当我使用 Navicat 创建表时(只需单击按钮新建表),我必须在表名中添加“”才能访问我的表,例如:

select * from "TBL_NAME";

那么,还有其他类型的桌子吗?如果我使用 Navicat 创建表,它是什么类型的?

【问题讨论】:

    标签: oracle navicat


    【解决方案1】:

    当您在 Oracle 中指定不带双引号的表名时,Oracle 会将该表名转换为大写。但是,如果您在双引号中指定表的名称,那么 Oracle 将尊重您可能使用的小写字母。

    因此,在您的示例中,表的名称已经全部大写,那么指定或不指定双引号没有区别。

    但是例如,如果您创建这样的表:

    CREATE TABLE "my_table" ....
    

    那你就不能这样访问了:

    SELECT * FROM my_table;
    

    因为 Oracle 会将选择转换为:

    SELECT * FROM MY_TABLE;
    

    而且你的系统中没有这样的表。

    在您使用 Navicat 的情况下,它只需要您按原样指定表的名称,但不要担心,只需加上双引号并坚持所有大写名称就可以了。

    【讨论】:

    • 感谢@DWilches,您的回答解决了我的问题。这让我整天困惑
    猜你喜欢
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2022-11-21
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多