如何:让Oracle表及字段显示为区分大小写

相信大部分用惯了SQL Server的人,刚开始用Oracle肯定会特不习惯,因为通常情况下,Oracle建的表名和字段名都会自动给我们转换为大写的。如下图所示:< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

?
?

??
?

说实话,笔者当初第一次接触Oracle的时候,也看着很不爽,可那会也只能无奈,因为没法解决。所以心理一直在想,如果能显示成区分大小写的该多好啊,于是我实现了心中的愿意,如下图所示:

?
?

期盼已久的效果终于实现了,特别高兴,所以我要告诉大家实现原理,以期待更多像我一样追求美观的人得到?一种心理安慰。

?
?

实现方式:

不再用PL-SQL直接建表了,而改用PD(Power Desginer)的方式建表。因为我发现不管我们是否大小写区分PL-SQL都会自动帮我们转换称大写的了。PD自动生成的SQL如下:

create table "TDepartment"??(

???FID??????????????????NVARCHAR2(36)??????????????????not null,

???"FText"??????????????NVARCHAR2(50)???????????????????not null,

???"FParentID"??????????NVARCHAR2(36)???????????????????not null,

???"FLevel"?????????????NUMBER,

???"FAutoCode"??????????NVARCHAR2(100),

???"FCode"??????????????NVARCHAR2(50),

???"FLeaf"??????????????NUMBER?????????????????????????default 1 not null,

???"FRemark"????????????NVARCHAR2(500),

???"FDataServerIP"??????NVARCHAR2(100),

???"FDataServerPort"????NVARCHAR2(10),

???"FMediaServerIP"?????NVARCHAR2(100),

???"FMediaServerPort"???NVARCHAR2(10),

???"FDataServer"????????NVARCHAR2(200),

???"FMediaServer"???????NVARCHAR2(200),

???constraint PK_TDEPARTMENT primary key (FID)

);

?
?

(字段说明的脚本在这就省略了)

?
?

原理分析:

PL自动生成的创建表的脚本中,表名和字段名都加了双引号。双引号在Oracle中表示区分大小写,Oracle是严格区分大小写的,未使用双引号时默认全部大写。可能很多人都会误认为oracle是不区分大小写的,原因是我们在写查询语句的时候,大小写无所谓,结果都是一样的,这只是个表面现象,只要你不使用双引号表示区分大小写,oracle会默认把你写的脚本全部转换为大写的。从下面可以看出:

?
?

?
?

因为Oracle默认存储为大写形式,所以PL-SQL显示的效果也是大写的。?

?
?

?
?

?
?

正是因为区分大小写,所以在Oracle中可以存在大小写并存的同名表或表字段。

?
?

到这里大家我想大家应该明白了,怎么使Oracle区分大小写了,就是使用双引号。

?
?

?
?

思考:既然Oracle可以区分大小写,那为什么大家在使用的时候都宁愿选择看着不舒服的大写形式呢?下面这个实验我们将给出答案,如下图所示:

?
?

?
?

正如上面所讲,如果我们不加双引号,那么Oracle会默认把表名和字段名全部转换为大写形式。

最简单的查询语句:select * from TCamera???

会报错,提示:ORA-00942:table or view does not exist???表或试图不存在

在这个时候,我们看提示应该很容易明白了,原因是在Oracle中的user-tables?不存在我们要查询的TCAMERA[自动转换称大写的]表。

那么正确的语句应该是:select * from "TCamera"???需要加双引号

???这个时候就感觉很不舒服了,那写查询多不方便呀,而且不仅是表名需要使用双引号,如果查询某些特定字段也需要加双引号,那么此时给开发人员将带来诸多的不便。这也就是为什么大家都宁愿选择全部大写的了。明白了吗?

?
?

??
?

Power Designer的对应设置:

使用PD的人就会有问题了,既然默认PD生成的都是带双引号区分大小写的,那怎么把双引号去掉呢,总不能一个一个改吧?呵呵,既然你想到了,那么Sybase的团队自然也是想到了,所以通过下面的设置步骤,就能去掉PD自动生成脚本的双引号了。

找到菜单Database—>Edit Current DBMS??会打开DBMS属性设置窗口,找到ScriptàSqlàCaseSensitivityUsingQuote,选择No,即大小写不区分。如下图所示:

?
?

?
?

点击确定后,系统会提示是否保存设置,请点击"是"。

?
?

这个时候我们来对比看一下生成的SQL:?

?
?

?
?

设置前,PD默认区分大小写,表名和字段都带双引号,如下图所示:

?
?

?
?

?
?

设置后,不区分大小写,所有的都不带双引号,所以生成的表及其字段都将默认被Oracle转换为大写的形式。如下图所示:

?
?

到这里,PD和Oracle就对应起来了,喜欢什么形式的就自己动手去设置吧。

?
?

最后我们对比一下SQL Server?和Oracle在查询具体内容上的区别,让大家更深刻地认识到我们平时可能存在的误解。

?
?

?
?

这表明,SQL Server在表字段内容中,其实也是不区分大小写的。但是Oracle就不同,同样的状况,Oracle肯定查询不到数据,因为Oracle严格区分大小写。不信自己可以去试试。

转自:?飞天心宏??2011-12-21

时间: 2024-10-16 23:48:42

如何:让Oracle表及字段显示为区分大小写的相关文章

ORACLE表test01字段的操作

SQL> create table test01     (NO NUMBER NOT NULL,NAME VARCHAR(30)); 1.修改表名称      SQL> alter table test01 rename to test02; Table altered. SQL> desc test01 ERROR: ORA-04043: object test01 does not exist SQL> desc test02  Name                   

oracle删除表字段和oracle表增加字段

这篇文章主要介绍了oracle表增加字段.删除表字段修改表字段的使用方法,大家参考使用吧 添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除字段的语法:alter table tablenam

oracle表中字段的添加、删除

在oracle数据库中为一张表添加一个字段: alter table tableName add ClIENT_OS varchar2(20) default '0' not null ; 在oracle数据库中添加多个字段: alter table tableName add (name varchar2(30)  default '无名氏'  not null,age number default 0 not null); 注: 表名:tableName 添加了两个字段 字段1:字段名称:n

oracle 表 及字段相关的 统计分析

--结构化数据-数据表 with x as ( select b.COMMENTS 表中文名,u.TABLE_NAME 表名称,b.COMMENTS 表详细描述,u.NUM_ROWS 数据量 from user_tables u left join user_tab_comments b on u.TABLE_NAME=b.TABLE_NAME),y as(SELECT SEGMENT_NAME TABLE_NAME, SUM(BYTES)/(1024*1024) "TABLE_SIZE[MB]

统计oracle表中字段的个数

select count(column_name) from user_tab_columns where table_name='emp' dba权限对应的视图是dba_tab_columns 和all_tab_columns

Oracle group by 多表多字段关联查询

group by 多表多字段关联查询 自己遇到一个问题,就是开始的时候需要一个字段的名字和数量,但是是同个一个表的. 数据库代码如下: select  l.batchnum,count(l.batchnum) batcount    from ts_outphone_list l join ts_outphone_batch b on l.batchnum=b.batchnum left join om_user_list om on l.datamanager=om.login_id left

oracle查看所有表及字段

oracle表设计 http://blog.csdn.net/lanpy88/article/details/7580820 Oracle查看所有表和字段 获取表: select table_name from user_tables; //当前用户的表 select table_name from all_tables; //所有用户的表 select table_name from dba_tables; //包括系统表 select table_name from dba_tables w

Oracle查询用户所有表、字段等信息

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 下面为您介绍的语句用于实现Oracle查询用户所有表,如果您对oracle查询方面感兴趣的话,不妨一看. select * from all_tab_comments -- 查询所有用户的表,视图等 select * from user_tab_comments -- 查询本用户的表,视图等 select * from

显示当前表的字段

show columns from login; //显示当前表的字段 mysql> use MySQL_DATA //首先选择数据库 Database changed mysql> show columns from test; //选择表 +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+-