今天一同事需要添加一条数据到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'''); 成功.
洗了睡.