PL/SQL中如何在字符串中转义单引号?

29 浏览
0 Comments

PL/SQL中如何在字符串中转义单引号?

在Oracle PL/SQL中,如何在字符串中转义单引号?我尝试过这种方式,但它并没有起作用。

declare
  stmt varchar2(2000);
begin
  for i in 1021 .. 6020
  loop
    stmt := 'insert into MY_TBL (Col) values(\'ER0002\')';
    dbms_output.put_line(stmt);
    execute immediate stmt;
    commit;
  end loop;
exception
  when others then
    rollback;
    dbms_output.put_line(sqlerrm);
end;
/

admin 更改状态以发布 2023年5月21日
0
0 Comments

这里有一篇博客文章,可以帮助你在字符串中转义单引号。

这是该文章中最简单的方法:

最简单、最常用的方法是在两个单引号间使用一个单引号。

SELECT 'test single quote''' from dual;

上面语句的输出是:
test single quote'

也就是说你需要一个额外的单引号字符来打印一个单引号字符。如果你使用两个单引号字符,Oracle会打印一个单引号。第一个单引号起到了转义字符的作用。

这是在Oracle中打印单引号的最简单的方法。但是当你需要打印一组引号而不仅仅是一个时,它会变得更加复杂。在这种情况下,以下方法可以很好地工作。但是需要更多的打字劳动。

0
0 Comments

你可以使用字面引用:

stmt := q'[insert into MY_TBL (Col) values('ER0002')]';

有关字面值的文档可在此处找到

或者,您可以使用两个引号来表示单引号:

stmt := 'insert into MY_TBL (Col) values(''ER0002'')';

使用Q语法的字面引用机制更灵活和易读,这是我的看法。

0