`

让Oracle 大小写敏感 表名 字段名 对像名

阅读更多
一、解决方案

   1、在表名、字段名、对象名上加上双引号,即可实现让oracle大小写区分。

   2、但是这又引起了另一个问题:在数据库操作中,sql语句中相应的表名、字段名、对象名上一定要加双引号。

解决办法是:使用"\"转义。如:

String sql = "select * from userinfo where \"loginId\"=? and loginpwd=?";


二、详解

  一 般情况下,使用者在进行Oracle开发或管理里都不会对ORACLE对像名大小写进行区别,因为ORALCE在普通情况下会将所有小写都转换为大写进行 处理,所以可以说是大小写不敏感的。但是实际ORACLE内部有它一套完整的对像名处理方式。本文将从实例进行分析与探讨ORACLE对像名大小写敏感性 的处理机制。

可 能很多人在工作已经了解到,ORACLE在创建对像时是可以加引号的,如果不加引号则不能使用特别字符,只能使用以字母开头的命名。如果加了引号就可以在 对像名里使用任何字符,包括数字开头、下划线、逗号等等。在导出SQLSERVER2000的对像创建脚本时一般是加了引号的,所以经常有人说脚本在 ORACLE中运行后对像不能访问的问题。

注:

1、 本文是以ORACLE9.2为测试分析版本

2、 本文中提到的ORACLE对像名包括ORACLE中的表名、视图名、字段名、函数名等等。

以下为创建表及访问使用不同命名方式的一个实例,测试结果如下:
Connected to Oracle9i Enterprise Edition Release 9.2.0.7.0
Connected as *****

SQL> create table mytable1
2 (
3    C1 VARCHAR2(6)
4 );
Table created
SQL> select * from "MYTABLE1";
C1
------
SQL> select * from MYtable1;
C1
------
SQL> select * from "mytable1";
select * from "mytable1"
ORA-00942: 表或视图不存在
SQL> drop table mytable1;
Table dropped
SQL>
SQL>
SQL> create table "mytable1"
2 (
3    C1 VARCHAR2(6)
4 );
Table created
SQL> select * from "mytable1";
C1
------
SQL> select * from mytable1;
select * from mytable1
ORA-00942: 表或视图不存在
SQL> select * from MYTABLE1;
select * from MYTABLE1
ORA-00942: 表或视图不存在
测试结果汇总:

√表示允许访问,×表示不允许访问。
读取
创建 mytable1 MYTABLE1 “mytable1” “MYTABLE1”
mytable1 √ √ × √
MYTABLE1 √ √ × √
“mytable1” × × √ ×
“MYTABLE1” √ √ × √
总结:
读取
创建 小写字母 大写字母 加引号小写字母 加引号大写字母
小写字母 √ √ × √
大写字母 √ √ × √
加引号小写字母 × × √ ×
加引号大写字母 √ √ × √
分析结论:

ORACLE在创建对像时如果没有加引号,对存入数据字典时都会将对像名小写字母转换成大写字母存储,如mytable将转换成MYTABLE;如果创建时加了引号,则以引号内的实际字符存储。

访问时如果没加引号则会将小写字母转换成大写字母再访问,如mytable将转换成MYTABLE;如果加了引号则以引号内的实际字符访问。

ORACLE在读取数据字典时只要发现对像名里有小写字母或者是除字母汉字以外开头的字符都认为是大小写敏感的,并且要求在访问时需要加上引号。
分享到:
评论

相关推荐

    Oracle中对像名大小写敏感性的深入解析

    一般情况下,使用者在进行Oracle开发或管理里都不会对ORACLE对像名大小写进行区别,因为ORALCE在普通情况下会将所有小写都转换为大写进行处理,所以可以说是大小写不敏感的。但是实际ORACLE内部有它一套完整的对像名...

    jdbc操作文档,数据库基本操作文档集合

    update 表名 set 字段名 = 字段值 where 要判断的字段名 = 要判断的字段值; 如果你要进行判断的字段值为null 要写 update 表名 set 字段名 = 字段值 where 要判断的字段名 is null; 4.删除记录 delete from 表名 ...

    Oracle数据库设计规范建议.doc

    3.1.2 一律大写,特别是表名:有些数据库,表的命名乃至其他数据对象的命名是大小写敏感 的,为了避免不必要的麻烦,并且尊重通常的习惯,最好一律用大写; 3.2 数据库对象命名规范 3.2.1 表的命名 3.2.1.1 表名的...

    ORACLE,mysql,sqlserver,sybase数据库装文本软件

    1或者oracle, oracle数据库,不区分大小写,默认1,需java1.5及以上版本 2或者sqlserver, mssqlserver数据库,不区分大小写,需java1.6及以上版本 3或者mysql, mysql数据库,不区分大小写,需java1.5及以上版本 4或者...

    一个oracle客户端(oracle sql handler)

    (5)加上/去掉注释标记、加上/去掉引号、增加/减少缩进、大小写转换等 o 运行语句 “desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.]objectName[@dbLink]”,如果是一表名,则能清楚地显示表...

    Oracle开发工具 - Oracle SQL Handler(功能强大,超方便好用, 免装客户端, Windows / Linux)

    (5)加上/去掉注释标记、加上/去掉引号、增加/减少缩进、大小写转换等 运行语句 “desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.] objectName[@dbLink]”,如果是一表名,则能清楚地显示表的列...

    震撼推出超方便实用的Oracle开发工具 - Oracle SQL Handler,双语界面,智能SQL编辑器,免装Oracle客户端,能运行于Windows, 双语界面

    (5)加上/去掉注释标记、加上/去掉引号、增加/减少缩进、大小写转换等 运行语句 “desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.]objectName[@dbLink] ”,如果是一表名,则能清楚地显示表的列...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word... [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) REFERENCES tablename(column1,column2,…..column...

    mysql基础只是总结

    d) change 原始的字段名 新的字段名 字段名 类型[大小] 属性,modify 字段名 类型[大小] 属性⋯⋯ [after|first 字段] e) rename 新的表名 (方法二:rename table 旧的表名 to 新的表名) f) engine=存储引擎(type不...

    PowerDesigner设计数据库使用规范.docx

    3、大小写规范: 构成Oracle数据库中的各种名称(表明,字段名,过程名,视图名等等)的所有字符,必须使用大写,也就是不能在脚本中,对任何名称添加双引号""来设定字符的大小写形式,只要不采用""限制,Oracle...

    mysql数据库开发规范【推荐】

    最近一段时间一边在线上抓取SQL来优化,一边在整理这个开发规范,尽量减少新的问题SQL进入生产库。...(1)MySQL有配置参数lower_case_table_names=1,即库表名以小写存储,大小写不敏感。如果是0,则库表名以实际情况

    2009达内SQL学习笔记

    大小写不敏感,即不区分大小写。提倡关键字大写,便于阅读和调式。 “!”在SQL环境下执行Unix命令。 SQL语句是由简单的英语单词构成;这些英语单词称为关键字/保留字,不做它用。SQL由多个关键字构成。 SQL语句...

    PL/SQL 基础.doc

    PL/SQL对大小写不敏感(注意) 4. 标识符命名规则答: 1) 字母开头; 2) 后跟任意的 非空格字符 数字 货币符号( $ ) 下划线( _ ) 或 # ; 3) 最大长度为30个字符(八个字符左右最合适); 用来给对象命名(潜规则):...

    经典SQL语句大全

    select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 具体实现: 关于数据库分页: declare @start int,@...

    数据库操作语句大全(sql)

    select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 具体实现: 关于数据库分页: declare @start int,@...

    sql经典语句一部分

    select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 具体实现: 关于数据库分页: declare @start int,@...

    Toad 使用快速入门

    TOAD提供语法标识、错误标识和其他很多易于使用的功能,如在弹出窗口显示表名、列名和Oracle函数。和其他的 PL/SQL 编辑工具不同,TOAD 允许在一个文件中操作多个数据库对象,可以编译一个对象、编译多个对象、编译...

    政务平台数据库设计.doc

    数据库的命名规则 为了清晰描述数据库对象,所有的表名采用汉语拼音前缀表示数据分类,表名和字段 名准确描述,避免使用有二义性的词汇。在某些习惯使用英文的字典表和系统设置表或 使用英文更能够描述对象的时候,...

Global site tag (gtag.js) - Google Analytics