说实话,笔者当初第一次接触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会默认把表名和字段名全部转换为大写形式。

最简单的查询语句: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默认区分大小写,表名和字段都带双引号,如下图所示:

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

原文链接: https://www.cnblogs.com/Aixi/p/3986326.html 我们都知道 oracle 数据库是 区分 大小写 的,但是有些需求为了提高用户使用体验,不希望让它 区分 大小写 ,那么我们就要在sql上用到“REGEXP_LIKE(字符串,正则表达式,'i')”,当参数设置为“i”时,说明进行匹配不 区分 大小写 。这个是在当前会话上,也就是说在每次发起查询的时候都需要执行这个才能起作用的,REGEXP_LIKE和模糊查询LIKE有一样的使用效果!- 'n', 允许使用可以匹配任意字符的操作符(通常是'.')- 'c', 说明在进行匹配时 区分 大小写 (默认选项) oracle 中关于 大小写 问题前言双引号在 字段 上增加测试一:创建表的时候不增加双引号测试二:建表时增加双引号, 字段 都不全是大写测试三:建表是增加双引号, 字段 /表名单项 全为大写个人总结:面试题: oracle 是否 区分 大小写 ? 有时候在操作 Oracle 数据库的时候,发现很多时候存在 带双引号,有时候就不带,有时候就是单引号。这个就有点儿疑惑。 单引号与双引号在 oracle 中的作用: 单引号代表的... 不 区分 大小写 ,关键字、用户、密码 、 字段 名 、表名、序列名 触发器名等是不 区分 的, 我们平时键入都是 大小写 随便输入的表名, 字段 名,关键字 大小写 忽略表名。 字段 名不能使用关键字,表名, 字段 名不可以使用数字开头, 中间不能出现特殊符号表名, 字段 名长度不能超过30个字符表名, 字段 名定义需要有含义。具体 字段 区分 大小写 。 这几天看的oca的教材,期间做了一个查询操作select owner,table_name,commentsfrom all_tab_commentswhere table_name='CHANGE_LOG';是个查询表注释的操作,敲得是后表名用的是‘chang_log’,没有用大写,结果就是查不出来,之前总是记得不 区分 大小写 ,这回又 区分 了,搜寻答案的过程总是收获颇丰1、在查询时时 区分 大小写 的,可... oracle 表名 、 字段 名 默认不 区分 大小写 ,除非建表语句中带双引号 如CREATE TABLE "TableName"("ID" number)。CREATE TABLE tablename (ID number);在查询的时候表名可以任意 大小写 。create table table_name(id number);当该表其中的一个字母为大写时 会报错。create table Table_... SELECT INITCAP('hello world') as "首字母大写" FROM DUAL; SELECT UPPER('hello world') as "全部转为大写" FROM dual; SELECT LOWER('HELLO WORLD') as "全部转为小写" FROM DUAL; 撰写时间:2019年03月31日 在做练习过程中总会遇到一些需求是获取某一 字段 里的某一个字母,无论 大小写 ,这时候如果我们按照平常写法就需要在WHERE条件连接里用到OR(或)的关系关键字进行筛选,这就增加了代码量,而在到单行函数中有一类为 大小写 控制函数,就完美的解决了这个问题。 例如我们需要获取...