单引号和双引号oracle都支持,但是两者是有区别的。
一、双引号的作用:关键字,对象名、字段名加双引号,则示意 Oracle将严格区分大小写,否则Oracl都默认大写。
1.双引号引住关键字
select "sysdate" from dual;等同于select sysdate from dual;
如下则不会输出时间,只会输出sysdate这个字符串。
select 'sysdate' from dual;
2.双引号引住字段名
select * from emp where "ENAME" = scott;
因为双引号提示oracle严格区分大小写,如下则不行
select * from emp where "ename" = scott;
二、单引号在 Oracle 中有三种身份:
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. 如果单引号出现在表达式中间(即非表达式开头和结尾的单引号),且多个单引号之间没有任何其他字符,