现在的位置: 首页 > 综合 > 正文

Oracle 对单引号的处理规则

2013年10月11日 ⁄ 综合 ⁄ 共 931字 ⁄ 字号 评论关闭

     今天一同事需要添加一条数据到Oracle中,这条数据包含一个字段的找为sp'id,试了一下发现有规律,但是没搞清楚是什么规律,于是回来尝试了一下,做了以下实验.

'a'
''s''s''
'i am'' a db'd''''s'

加以上3条数据.

先是尝试

insert into users(userid) values(''' || a || '''); 失败

然后尝试

insert into users(userid) values('''a'''); 成功

于是以为'''代表'字符串.

然后用'''代表'字符串的思想加第二个.

insert into users(userid) values(''''''s''''''s''''''); 失败

接着在网上查了一下,发现一般在俩个字符中间加',比如a'a,是用''来表示'.又来试:

insert into users(userid) values(''''''s''''s''''''); 还是失败

最后尝试把''当作'来做实验.

insert into users(userid) values(''''s''''s''''); 还是失败(俩边是4个')

insert into users(userid) values('''''s''''s'''''); 却成功了.(俩边是5个')

insert into users(userid) values(''''''s''''s''''''); 失败(俩边是6个)

insert into users(userid) values('''''''s''''s'''''''); 成功(俩边是7个)结果为'''s''s'''

于是终于发现规律,规律如下:

2个'代表1个',最外面3个'代表1个'的原因是本身加字符串到数据库首先就需要''俩个来包含住里面的字符串,例如a,入库需要这样'a'

所以,要加'a'这样的字符串,首先作为添加字符串入库,就需要2个'包含里面的字符串,然后再在2个'中间加'a'字符串,于是2个'代表1个',就有这样的结果'''a'''.

最终尝试'i am'' a db'd''''s'这个超难的一次性成功

insert into users(userid) values('''i am'''' a db''d''''''''s'''); 成功.

洗了睡.

 

【上篇】
【下篇】

抱歉!评论已关闭.