我需要更新表格列为varchar2
数据类型的表,并且需要使用'%'
更新列的值。
例如 -
create table test (id number, name varchar2(20));
insert into test values (1, 'smith');
insert into test values (2, 'allen');
现在我们需要将NAME列中的值更新为smith'%'
所以它也应该在字符串中包含单引号。
我可以将它更新为史密斯%,但它应该是史密斯'%'
update test
set name = 'smith'||'''%'''
where id = 1;
SQL错误:ORA-00911:无效字符
答案 0 :(得分:1)
答案 1 :(得分:1)
您的查询在SQLPlus中完美运行:
SQL> update test
2 set name = 'smith'||'''%'''
3 where id = 1;
1 row updated.
SQL> select * from test;
ID NAME
---------- --------------------
1 smith'%'
2 allen
这可能是另一种方式,避免需要加倍报价:
SQL> update test
2 set name = 'allen'|| q'['%']'
3 where id = 2;
1 row updated.
SQL> select * from test;
ID NAME
---------- --------------------
1 smith'%'
2 allen'%'
甚至,避免||
:
SQL> update test
2 set name = concat(name, q'['%']')
3 where id = 1;
1 row updated.
SQL> select * from test;
ID NAME
---------- --------------------
1 smith'%''%'
2 allen'%'
答案 2 :(得分:0)
实际上你的陈述应该有效,我只是在我的数据库中进行了测试。
update test
set name = concat('smith', '''%''')
where id = 1;