因为 ORACLE 在建表/字段时,如果没有双引号, ORACLE 会把表名、字段名全部转化为大写字母,然后写入数据字典。访问数据字典时,没有双引号 ORACLE 会将其转化成大写然后再去数据字段中查找。不仅仅关键字不区分大小写,函数名,过程名,表名称,pl/sql块中变量名,用户名,密码等都不区分大小写[1]。
可能很多人都会误认为 ORACLE 是不区分大小写的,原因是我们在写查询语句的时候,大小写无所谓,结果都是一样的,这只是个表面现象。因为只要你不使用双引号表示区分大小写, ORACLE 会默认把你写的脚本全部转换为大写的。
例如:如果创建表使用如下语句:
create table "TaBlE_NaMe"(blah..)
那么必须在SELECT中使用双引号才能返回预期结果。
如果创建表使用:
create table TaBlE_NaMe (blah..)
没有引号的SELECT也应该能返回预期结果[2]。