在mysql中,单双引号除了在相互包含对方的情况下,基本上没什么区别!
Oracle中,单双引号则是区别明显 1.一般情况下都是使用单引号
[SQL] 纯文本查看 复制代码 SQL> select 'aa' from dual;
'AA'
----
aa
SQL> select 'aa"' from dual;
'AA"'
------
aa"
SQL> select "aa" from dual;
select "aa" from dual
*
第 1 行出现错误:
ORA-00904: "aa": 标识符无效
双引号不能用于普通情况下,但是可以被包含在字符串中!现在有个问题,如果我在字符中包含了单引号,那我该怎么做?mysql是用双引号引上!Oracle是除了最外面的两个引号外,全部double一次,就是以变二了!看几个例子: [SQL] 纯文本查看 复制代码 SQL> select 'aa''' from dual;
'AA'''
------
aa'
#去掉最外面两个单引号,变成a'',在里面的单引号都是一变为二的,所以a''就是a'
SQL> select 'a''''' from dual;
'A''''
------
a''
#同理去掉最外面的两个单引号a'''',根据一变为二原则,a''就是a''''
SQL> select 'a''b''''c''''''' from dual;
'A''B''''C'''''''
------------------
a'b''c'''
同理
那么,现在又有一个问题了!如果去掉最外层的两个单引号,被引上的字符串中单引号数量为单数,会发生什么情况? [SQL] 纯文本查看 复制代码 SQL> select 'a'';
ERROR:
ORA-01756: 引号内的字符串没有正确结束
SQL> select 'a'''';
ERROR:
ORA-01756: 引号内的字符串没有正确结束
#提示很明显了!字符串没有正确结束
当然,用引号翻倍的方法只是用于引号不多的情况,如果字符串中引号繁多,一个个进行翻倍比较麻烦,Oracle提供了前缀引的方法 [SQL] 纯文本查看 复制代码 SQL> select Q'{asdf}' from dual;
Q'{ASDF}
--------
asdf
SQL> select q'{aren't you?}' from dual;
Q'{AREN'TYOU?}'
----------------------
aren't you?
#使用q/Q前缀关键字 加上对单引号,在引号里面包含一堆括号(大、中、小都可以)
#括号里面就是需要被引上的内容
2.双引号用于引别名或者Oracle内定关键字
看一下它的几个用法 [SQL] 纯文本查看 复制代码 SQL> select 'hello' 1 from dual;
select 'hello' 1 from dual
*
第 1 行出现错误:
ORA-00923: 未找到要求的 FROM 关键字
#如果列值想以数字开头
SQL> select 'hello' "1" from dual;
1
----------
hello
#使用双引号吧,双引号可以打破oracle对命名的限制
SQL> select 'hello' world from dual;
WORLD
----------
hello
SQL> select 'hello' 'world' from dual;
select 'hello' 'world' from dual
*
第 1 行出现错误:
ORA-00923: 未找到要求的 FROM 关键字
#单引号不能引列名
SQL> select 'hello' "world" from dual;
world
----------
hello
#这样的任务交给双引号吧
|