Oracle 支持 单引号和双引号,但两者存在区别。 
一、双引号的作用:关键字,对象名、字段名、别名加双引号,则指示 Oracle将严格区分大小写,否则Oracl都默认大写。 
1.1、双引号引住关键字 
  select sysdate from dual; -->2019/1/23 11:33:00
  select “sysdate” from dual; -->ORA-00911: invalid character
  如下则不会输出时间,只会输出sysdate这个字符串。 
    select ‘sysdate’ from dual; -->sysdate
1.2、双引号引住字段名 
  select * from emp where ENAME = 'ALLEN'; -->ok
  select * from emp where “ENAME” = 'ALLEN'; -->ok
  因为双引号提示oracle严格区分大小写,如下则不行 
    select * from emp where “ename” = 'ALLEN'; -->error
1.3、别名可以不用任何引号,但是比较特殊的别名必须用双引号,例如“a b”中间有特殊字符的;

1)一般来说,字符串中双引号仅仅被当做一个普通字符进行处理。
此时,双引号不需要成对出现:

SQL> select 'hh24"小时""mi""分"""ss"秒"' results from dual;RESULTS
-------------------------
hh24"小时""mi""分"""ss"秒"

2)当出现在to_char的格式字符串中时,双引号有特殊的作用,就是将非法的格式符包装起来,避免出现ORA-01821: date format not recognized错误。
to_char在处理格式字符串时,会忽略双引号。

SQL> select to_char(sysdate,'hh24"小时"mi"分"ss"秒"') results from dual;RESULTS
--------------
06小时39分51秒

格式串为'hh24"小时"mi"分"ss"秒"';
去掉双引号部分后,剩下的是'hh24miss',是一个合法的格式串。
不过即使真不知道双引号的这个用法,也可以这样来处理,虽然麻烦一点:

select to_char(sysdate, 'hh24') || '小时' ||to_char(sysdate, 'mi') || '分' ||
to_char(sysdate, 'ss') || '秒'
AS RESULT
from dual;
RESULT
--------------
06小时40分18秒

 

SELECT * FROM users WHERE id="F7119E4462E04303A7737AAB7B7E2917";-->报错:ORA-00972: identifier is too long。还是非法格式?
SELECT * FROM users WHERE id='F7119E4462E04303A7737AAB7B7E2917';

二、单引号在 Oracle 中有三种作用
2.1、引用一个字符串常量,也就是界定一个字符串的开始和结束。   -->字符串是由单引号引用
例子: 
  select * from table_name where id=1123;  表示查询的是数字 
  select * from table_name where id=’1123’;  表示查询的是字符。当指定字符串文本时,必需用单引号将字符串文本引住。
2.2、转义符,对紧随其后出现的字符(单引号)进行转义 
2.2.1、从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)。  

SQL> select '''' result from dual;
RESULT
------
'

2.2.2、连接符‘||’导致了新一轮的转义
连接符号‘||’左右的单引号没有任何的关系,除非‘||’是作为字符串的一部分(这在动态SQL中很常见)。
理解:||后面的作为一个字符串,即前后是',中间又是一个密集型单引号串'',因此第一个为转义功能。

SQL> select 'name'||'''' result from dual;RESULT
------
name'

第一个和最后一个单引号作为字符串引用符,中间四个单引号两两转义。

SQL> select 'name''''' result from dual;
RESULT
------
name''