oracle转译参数外加引号,oralce里面的单引号转义-Oracle

oralce里面的单引号转义

在oracle中,字符串是由单引号引用的,而转义也是由单引号来完成的,这对于许多初学者而言是件头疼的事情,尤其是开始学习动态SQL的人。如果就单纯的单引号而言,很容易让人理解:它总是找与它最近的一个单引号配对。也就是所谓的就近原则;但是在单引号充当转义角色的时候,情况就显得有些让人费解了。(为方便起见,红色单引号都是充当转义角色)

1、从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)。

SQL> select ”” from dual;

””

—   www.2cto.com

为了证实结果是被第二个单引号转义的第三个单引号(既:select ”” from dual;),我们做如下两个测试:

SQL> select ”’ from dual;

ERROR:

ORA-01756: 引号内的字符串没有正确结束

相信大家对这样的错误不陌生吧

SQL> select ‘sdlf from dual;

ERROR:

ORA-01756: 引号内的字符串没有正确结束

也就是说,当第二个单引号充当转义角色,第三个单引号被转义。

那么 select ” ‘ from dual; 自然就缺少与第一个单引号匹配的单引号了,出现了孤立的单引号

下面的两个实验就更加支持了上面的结论。

SQL> select ‘ ” ‘ from dual;

””

——

‘   www.2cto.com

SQL> select ” ” from dual;

select ” ” from dual

*

ERROR 位于第 1 行:

ORA-00923: 未找到预期 FROM 关键字

对于第一个:select ‘ ” ‘ from dual;

对于第二个:不存在转义。

上面的这两个实验其实也是单引号转义与非转义的一个性质:转义是密集的,也就是说,如果单引号出现在转义的位置上,而该单引号后面紧跟(紧跟的定义为:两个单引号之间是零距离的)的不是单引号,这个时候单引号就不在充当转义的角色,而是与它前面的配对。

2、连接符‘||’导致了新一轮的转义:连接符号‘||’左右的单引号没有任何的关系,除非‘||’是作为字符串的一部分(这在动态SQL中很常见)。

SQL> select ‘exit’||”” from dual;

‘EXIT’||”

———-

exit’

www.2cto.com

SQL> select ‘exit””’ from dual;

‘EXIT””’

————

exit”

对于第一个,前两个单引号配对,后面四个单引号按照上面的第一条原则分配,既:select ‘exit’||”” from dual;

对于第二个,由于第二个单引号后面存在单引号,所以就不与第一个配对,而是充当了转义的角色。既:select ‘exit””’ from dual;

有了上面的两条原则,我们就可以从容的面对复杂的动态SQL了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值