双引号的作用是:如果创建对象的时候,对象名、表的字段名加双引号,则表示Oracle将严格区分大小写,否则Oracl都默认大写;双引号一般是用来转义的,如果别名或
表的字段里面有空格或其它保留符号,必须使用双引号。
单引号用于标识字符;两个单引号可以作为单引号的转义使用,意思就是一个真正的、没有特殊功能的单引号。
1、如果创建对象的时候,对象名、表的字段名加双引号,则表示Oracle将严格区分大小写,否则Oracl都默认大写;
sql>create table "The"(name varchar2(50));
sql>select * from The;
select * from The
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
sql>select * from "The";
未选定行
2、双引号用在字符串中当成普通字符处理,且不一定要成对出现。
sql>select 'hh24"小时""mi"分"""ss"秒"' AS RESULT from dual;
RESULT
-------------------------
hh24"小时""mi"分"""ss"秒"
3、双引号用在to_char函数里的字符串中时,有特殊作用,可以将特殊字符包起来,避免出现ORA-01821: date format not recognized错误。也就是说,去掉双引号和其包含的字符后,剩下的应该是一个合法的格式串。
sql>select to_char(sysdate, 'YYYY"年"MM"月"DD"日"') AS RESULT from dual;
RESULT
-------------------------
2012年04月17日
4、如果别名或表的字段里面有空格或其它保留符号,必须使用双引号
sql>create table tt("sysdate" varchar2(10));
sql>insert into tt
values('111');
sql>commit;
sql>select "sysdate" from
tt;
sysdate
-----------------
111
sql>select "sysdate".* from tt "sysdate" where "sysdate"."sysdate"='111';
sysdate
-------------------------
111
sql>select 'sysdate' from tt;
sysdate
-----------------
sysdate
sql>select
'a' as "this is char" from dual;
this is char
sql>select 'a' as 'this is char' from dual;
报错
5、如果别名没有空格或其它保留符号,别名使用双引号会报错(在10g下别名没有空格或其它保留字也可以用双引号,此时别名区分大小写(见下面例子),可能在9i不可以);
如果表的字段里面没有空格或其它保留符号,表字段使用双引号会报错;
虚拟列使用双引号会报错
sql>select "sysdate" from dual;
ORA-00904: "sysdate": 标识符无效
因为上面的"sysdate"是虚拟列,不能使用双引号,所以报错。
sql>select ‘abc’ as "s" from dual; //别名是小写s,10g
s
-----------------
abc
注意:select别名是小写s,查询结果中列头也是小写s,如果别名没有用双引号,查询结果列头则是大写S。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30150152/viewspace-1473817/
,如需转载,请注明出处,否则将追究法律责任。