Oracle 表名、字段名、视图名、存储过程名 是否区分大小写

时间:2022-10-05 00:50:42
视图名:V_USER

一直都认为oracle是不区分大小写,奇怪的现象,我查询视图结构,SQL如下:

select column_name from all_tab_columns where table_name='v_user'
-- no rows selected.



select column_name from all_tab_columns where table_name='V_USER'
-- 可以搜索到字段结果


我想问的是Oracle中哪些对 大小写是敏感的(表名、字段名、存储过程名、变量名、视图名)

7 个解决方案

#1


引用 楼主 default7 的回复:
视图名:V_USER

一直都认为oracle是不区分大小写,奇怪的现象,我查询视图结构,SQL如下:

select column_name from all_tab_columns where table_name='v_user'
-- no rows selected.



select column_name from all_tab_columns where table_name='V_USER'
-- 可以搜索到字段结果


我想问的是Oracle中哪些对 大小写是敏感的(表名、字段名、存储过程名、变量名、视图名)

不管你创建对象的时候用的是大写还是小写,最后你在视图中查询对象名的时候都是大写。
不区分大小写是指你在创建的时候不区分。
如下:(第二次创建的时候就会报错)

create table tt(a number);

create table TT(a number);

#2


是的,要注意应用的范围。
建议楼主在脚本中多用upper , 你懂得!

#3


楼主这样理解,数据字典方面存储的都是不区分大小写(统统为大写)。
而存储在表中的数据才区分大小写。

#4



create table mytable(a int)  ; 
create table "mytable" (a int) ;


-- 会创建两张表, 上面的会转成大写,下面的不转。

#5


引用 4 楼 wmxcn2000 的回复:

create table mytable(a int)  ; 
create table "mytable" (a int) ;


-- 会创建两张表, 上面的会转成大写,下面的不转。


PHP传递查询语句过去,如果表名没有加引号会直接报错。

#6


引用 5 楼 default7 的回复:
Quote: 引用 4 楼 wmxcn2000 的回复:


create table mytable(a int)  ; 
create table "mytable" (a int) ;


-- 会创建两张表, 上面的会转成大写,下面的不转。


PHP传递查询语句过去,如果表名没有加引号会直接报错。


报 表名不存在? 回头试试。

#7


你在oracle 创建对象的时候, 如果没有加双引号, 默认都会转成大写的。 
在用这些对象的时候, 是不区分大小写的。  但是你差的视图, 他以字符串的形式存的,当然就会区分大小写了,就跟你查询正常的表记录一样。 

#1


引用 楼主 default7 的回复:
视图名:V_USER

一直都认为oracle是不区分大小写,奇怪的现象,我查询视图结构,SQL如下:

select column_name from all_tab_columns where table_name='v_user'
-- no rows selected.



select column_name from all_tab_columns where table_name='V_USER'
-- 可以搜索到字段结果


我想问的是Oracle中哪些对 大小写是敏感的(表名、字段名、存储过程名、变量名、视图名)

不管你创建对象的时候用的是大写还是小写,最后你在视图中查询对象名的时候都是大写。
不区分大小写是指你在创建的时候不区分。
如下:(第二次创建的时候就会报错)

create table tt(a number);

create table TT(a number);

#2


是的,要注意应用的范围。
建议楼主在脚本中多用upper , 你懂得!

#3


楼主这样理解,数据字典方面存储的都是不区分大小写(统统为大写)。
而存储在表中的数据才区分大小写。

#4



create table mytable(a int)  ; 
create table "mytable" (a int) ;


-- 会创建两张表, 上面的会转成大写,下面的不转。

#5


引用 4 楼 wmxcn2000 的回复:

create table mytable(a int)  ; 
create table "mytable" (a int) ;


-- 会创建两张表, 上面的会转成大写,下面的不转。


PHP传递查询语句过去,如果表名没有加引号会直接报错。

#6


引用 5 楼 default7 的回复:
Quote: 引用 4 楼 wmxcn2000 的回复:


create table mytable(a int)  ; 
create table "mytable" (a int) ;


-- 会创建两张表, 上面的会转成大写,下面的不转。


PHP传递查询语句过去,如果表名没有加引号会直接报错。


报 表名不存在? 回头试试。

#7


你在oracle 创建对象的时候, 如果没有加双引号, 默认都会转成大写的。 
在用这些对象的时候, 是不区分大小写的。  但是你差的视图, 他以字符串的形式存的,当然就会区分大小写了,就跟你查询正常的表记录一样。