ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle中的双引号与单引号

Oracle中的双引号与单引号

Linux操作系统 作者:warren20 时间:2015-03-25 23:44:07 0 删除 编辑
  双引号的作用是:如果创建对象的时候,对象名、表的字段名加双引号,则表示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
-----------------
a
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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-03-03

  • 博文量
    56
  • 访问量
    376702