Oracle中带引号字段的CREATE语句

 太阳之神sqh 发布于 2023-01-19 10:12

我使用以下CREATE语句在Oracle 10g中创建了一个表.

CREATE TABLE test ("id" NUMBER(35, 0) primary key, "description" VARCHAR2(250) not null);

基本表结构如下所示.

--------------------------------------------------------------------------------
Column Name       Data Type         Nullable     Default    Primary Key 
--------------------------------------------------------------------------------
id                NUMBER(35, 0)     No           -          1
description       VARCHAR2(250)     No           -          -

应该注意的是,此CREATE语句中的列名称用双引号括起来只是为了有趣:)

在发出这个DDL语句之后,我发出了三个DML语句来添加这么多行,如下所示.

INSERT INTO test VALUES (1, 'aaa');
INSERT INTO test VALUES (2, 'bbb');
INSERT INTO test VALUES (3, 'ccc');

最后,执行以下SELECT语句以验证是否插入了这些行.

SELECT * FROM test;

Oracle确实显示与执行此查询时完全相同的三行.


但是当我发出以下SELECT查询时,

SELECT id, description FROM test;

甲骨文抱怨,

ORA-00904:"DESCRIPTION":标识符无效

以下(相同)查询也是,

SELECT id FROM test;

错误,错误,

ORA-00904:"ID":标识符无效

查询也是如此,

SELECT description FROM test;

SELECT具有元字符的唯一查询*有效.SELECT子句中的列表字段不起作用.在SELECT子句中大写列名也不起作用.

它背后的原因是什么?

请不要只说,不要这样做.我很想知道背后的原因.

1 个回答
  • 好吧,我不会说出来,我只是大声地想.

    该文件明确表示,如果你有带引号的标识符,你要到处(我的斜体字表示强调)引用他们:

    每个数据库对象都有一个名称.在SQL语句中,你代表了一个对象的名称带引号的标识符带引号的标识符.

    带引号的标识符以双引号(")开头和结尾.如果使用带引号的标识符命名模式对象,则每次引用该对象时都必须使用双引号.

    未加引号的标识符不包含任何标点符号.

    所以你总是要这样做:

    SELECT "id", "description" FROM test;
    

    这是一种痛苦.但显然我也只是这么想,而不是真的这么说.

    2023-01-19 10:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有