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

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

115998077_2_20171112063246948.jpg

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

不再用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会默认把你写的脚本全部转换为大写的。从下面可以看出:

115998077_3_20171112063247370.jpg

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

115998077_4_20171112063247620.jpg

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

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

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

115998077_5_20171112063247917.jpg

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

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

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

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

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

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

使用PD的人就会有问题了,既然默认PD生成的都是带双引号区分大小写的,那怎么把双引号去掉呢,总不能一个一个改吧?呵呵,既然你想到了,那么PD自动生成脚本的双引号了。

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

115998077_7_20171112063248385.jpg

7.jpg (76.66 KB, 下载次数: 2)

2012-8-9 08:42 上传

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

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

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

115998077_8_20171112063248557.jpg

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

115998077_9_20171112063248776.jpg

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

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

115998077_10_20171112063249260.jpg

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值