首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个简单的select语句需要引号?

为什么这个简单的select语句需要引号?
EN

Database Administration用户
提问于 2014-04-24 10:12:32
回答 1查看 1.4K关注 0票数 1

为什么下面的陈述

代码语言:javascript
复制
select * from expertrule where rule_id = '1';

返回此错误

代码语言:javascript
复制
ORA-00904: "RULE_ID": invalid identifier

代码语言:javascript
复制
select * from expertrule where "rule_id" = '1';

行得通!

对于表的每一列(只有这个表)也是如此。此表中的所有列都需要围绕其名称引用。为什么?

代码语言:javascript
复制
  CREATE TABLE "TEST"."expertrule" 
   (    "rule_id" NUMBER(*,0), 
    "name" VARCHAR2(256 BYTE), 
    "description" VARCHAR2(256 BYTE), 
    "ruleaccess" VARCHAR2(4000 BYTE), 
    "ruledisable" VARCHAR2(4000 BYTE), 
    "userssn" VARCHAR2(256 BYTE), 
    "departmentid" VARCHAR2(256 BYTE), 
    "active" CHAR(1 BYTE)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "TESTTABLESPACE" ;
EN

回答 1

Database Administration用户

回答已采纳

发布于 2014-04-24 10:16:55

您使用双引号创建了您的列,因此Oracle现在要求您始终使用标识符引用该列,并尊重情况。如果删除双引号,Oracle总是将名称转换为大写,因此如果没有双引号,则不区分大小写。

如果您在创建列时没有标识符,则此操作将有效:

代码语言:javascript
复制
where rulE_id
where RULE_ID

此外,在创建表时,除非使用保留字,否则不需要引号。

票数 7
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/63813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档