在mysql中,单双引号除了在相互包含对方的情况下,基本上没什么区别!
Oracle中,单双引号则是区别明显

1.一般情况下都是使用单引号
 

  1. SQL> select 'aa' from dual; 
  2.  
  3. 'AA' 
  4. ---- 
  5. aa 
  6.  
  7. SQL> select 'aa"' from dual; 
  8.  
  9. 'AA"' 
  10. ------ 
  11. aa" 
  12.  
  13. SQL> select "aa" from dual; 
  14. select "aa" from dual 
  15.        * 
  16. 第 1 行出现错误: 
  17. ORA-00904: "aa": 标识符无效 

双引号不能用于普通情况下,但是可以被包含在字符串中!现在有个问题,如果我在字符中包含了单引号,那我该怎么做?mysql是用双引号引上!Oracle是除了最外面的两个引号外,全部double一次,就是以变二了!看几个例子:

  1. SQL> select 'aa''' from dual; 
  2.  
  3. 'AA''' 
  4. ------ 
  5. aa' 
  6. #去掉最外面两个单引号,变成a'',在里面的单引号都是一变为二的,所以a''就是a'
  7.  
  8. SQL> select 'a''''' from dual; 
  9.  
  10. 'A'''
  11. ------ 
  12. a'' 
  13. #同理去掉最外面的两个单引号a'''',根据一变为二原则,a''就是a''''
  14.  
  15. SQL> select 'a''b''''c''''''' from dual; 
  16.  
  17. 'A''B''''C''''''' 
  18. ------------------ 
  19. a'b''c''' 
  20. 同理

那么,现在又有一个问题了!如果去掉最外层的两个单引号,被引上的字符串中单引号数量为单数,会发生什么情况?

  1. SQL> select 'a''; 
  2. ERROR: 
  3. ORA-01756: 引号内的字符串没有正确结束 
  4.  
  5.  
  6. SQL> select 'a''''; 
  7. ERROR: 
  8. ORA-01756: 引号内的字符串没有正确结束 
  9. #提示很明显了!字符串没有正确结束

当然,用引号翻倍的方法只是用于引号不多的情况,如果字符串中引号繁多,一个个进行翻倍比较麻烦,Oracle提供了前缀引的方法

  1. SQL> select Q'{asdf}' from dual; 
  2.  
  3. Q'{ASDF} 
  4. -------- 
  5. asdf 
  6.  
  7. SQL> select q'{aren't you?}' from dual; 
  8.  
  9. Q'{AREN'TYOU?}' 
  10. ---------------------- 
  11. aren't you? 
  12. #使用q/Q前缀关键字 加上对单引号,在引号里面包含一堆括号(大、中、小都可以)
  13. #括号里面就是需要被引上的内容

2.双引号用于引别名或者Oracle内定关键字
看一下它的几个用法

  1. SQL> select 'hello' 1 from dual; 
  2. select 'hello' 1 from dual 
  3.                * 
  4. 第 1 行出现错误: 
  5. ORA-00923: 未找到要求的 FROM 关键字 
  6. #如果列值想以数字开头
  7.  
  8. SQL> select 'hello' "1" from dual; 
  9.  
  10. ---------- 
  11. hello 
  12. #使用双引号吧,双引号可以打破oracle对命名的限制
  13. SQL> select 'hello' world from dual; 
  14.  
  15. WORLD 
  16. ---------- 
  17. hello 
  18.  
  19. SQL> select 'hello' 'world' from dual; 
  20. select 'hello' 'world' from dual 
  21.                * 
  22. 第 1 行出现错误: 
  23. ORA-00923: 未找到要求的 FROM 关键字 
  24. #单引号不能引列名
  25.  
  26. SQL> select 'hello' "world" from dual; 
  27.  
  28. world 
  29. ---------- 
  30. hello 
  31. #这样的任务交给双引号吧