oracle单引号和双引号的区别


一:双引号


关键字,对象名、字段名加双引号,则示意 Oracle将严格区分大小写,否则Oracl都默认大写。


1.双引号引住关键字(特有字符)


1:select "sysdate" from dual;等同于select sysdate from dual;


  2:select 'sysdate' from table_name; 但是你要是用


  那么你查出来的就是字符串,结果是sysdate


2.双引号引住字段名


     select * from emp where "ENAME" = scott;


 因为双引号提示oracle严格区分大小写,如下则不行


   select * from emp where "ename" = scott;


3:两个"相当与一个'


  运用如下的更新语句不可以:


1:update device set dept='select * from message where name='tom' ' where id=3 ;


  处理要领:


  2:update device set dept='select * from message where name=' 'tom' ' where id=3'


两个'' 示意了一个'



二:单引号(三种身份)


1:引用一个字符串常量


也就是界定一个字符串的开始和结束。


例子:


      select * from table_name where id=1123;这种代表查询的是数字


    select * from table_name where id='1123';这种代表查询的是字符


2: 转义符


对紧随其后出现的字符(单引号)进行转义


例子:


    declare


 id varchar2(20);


 begin


    select * from table_name where like '''%'||id||'%'''


 end;


 /


3:表示它本身


也就是它作为一个字符串的一部分而出现在一个字符串常量中,这点与2密不可分。


示例一:select '''' from dual;


分析:表达式 '''' 中第1、4个单引号表示引用一个字符串常量,表达式的剩余部分我们从左往右分析,由于中间是一对单引号,故此对中的第一个是转义符,其对第二个进行转义,使第二个表示单引号本身。结果是只有一个单引号字符。sql 语句的运行结果与我们的分析结果一致。


示例二:


declare


c_sql varchar2(200);


name  varchar2(10);


begin


c_sql := 'select ID from swj where DWID like ' || ''''''||'  and'|| ' SWJMC' ||' like '||''''||name||'''' ;


end;


/


分析:这个例子比较复杂,但是原理还是一样的。这里用到了连接符||,所以要每个||独自分析,'select ID from swj where DWID like '很简单,就是一个字符串。''''''先剥离最外层的一对'',剩下的就是'''',然后一对''表示一个',前面对后面进行转义,这里就是''。后面的类似分析,最后的''''就表示一个'。


所以最后的语句就是: select ID from swj where DWID like  ''  and  SWJMC like 'name';


单引号用法总结:


1:出现在表达式开头和结尾的这两个单引号的含义肯定是表示引用一个字符串,界定字符串的开始和结束.


2:运用 如果单引号出现在表达式中间(即非表达式开头和结尾的单引号),且多个单引号之间没有任何其他字符,那么当我们从左向右分析时,第一对单引号中的第一个是转义符,它对紧随其后的第 二个单引号进行转义,以使第二个单引号作为一个字符出现在一个字符串常量中。第二队,第三队,以此类推


    那么当我们从左向右分析时,每一对单引号表示一个单引号字符。其中第一个是转义符,它对紧随其后的第二个单引号进行转义,以使第二个单引号作为一个字符出现在一个字符串常量中。