在写sql语句的时候,常常会遇到单引号嵌套的情况,比如:
update IM_SVFLOWINFO set SFI_VALUE ='通知存款开立',
SFI_TRANSQL ='select t.ido_flowno,t.ido_cstno,getSttName(t.ido_stt),t.ido_submittime,cast('通知存款开立' as varchar2(50)) from CB_INFORM_DEPOSIT_OPEN t where 0=0'
where SFI_ID ='100000000017';
我们不用仔细去看这句话到底是什么意思,它只是说明在某个表的某个字段里面存储了sql,这个sql里带了单引号,那么在整个sql的外面加单引号时就会报错,用双引号和单引号嵌套的做法是行不通的,具体原因貌似跟QUOTED_IDENTIFIER有关,还没有搞清楚。
这时候我们可以用''(两个单引号不是双引号)来表示一个单引号,即第一个单引号是转义字符,第二个是真正的单引号,于是上面的句子可以写成这样:
update IM_SVFLOWINFO set SFI_VALUE ='通知存款开立',
SFI_TRANSQL ='select t.ido_flowno,t.ido_cstno,getSttName(t.ido_stt),t.ido_submittime,cast(''通知存款开立'' as varchar2(50)) from CB_INFORM_DEPOSIT_OPEN t where 0=0'
where SFI_ID ='100000000017';
再如: str varchar2;
str='0''0'; 的结果是0'0