使用特殊字符'%'将字符串附加到update语句中

时间:2017-02-22 07:20:03

标签: sql oracle sql-update

我需要更新表格列为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:无效字符

3 个答案:

答案 0 :(得分:1)

SQL> set define off;

验证此链接

how-to-enter-special-characters-like-in-oracle-database

答案 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;