本章将讨论如何在 PL/pgSQL 编程中使用以美元符号作为引号的字符串常量。
背景
SELECT '你好,世界';
当字符串本身包含单引号时,需要进行转义:
SELECT '他说:''你好,世界''。';
为了减少转义,让字符串常量更具可读性,PostgreSQL 加入了使用以美元符号作为引号的语法。
以美元符号作为引号
语法:
$tag$<字符串常量>$tag$
tag
:可选,可以是零个或多个字符串字符串常量
:可以放置任何字符,包括单引号、反斜杠等
SELECT $dir$目录:c:\'Program Files'\Google$dir$;
此例中,我们设置 tag
为 dir
。
为简化描述,我们将”以美元符号作为引号“简称为”美元引号“或者”DQ“
在匿名块中使用美元引号
do
'declare
film_count integer;
begin
select count(*) into film_count
from film;
raise notice ''The number of films: %'', film_count;
end;';
-
你可以在后续章节了解匿名块。你可以把以上代码复制到
psql
或dbeaver
中执行 -
块中的代码必须用单引号括起来。如果代码内部也有单引号,必须进行转义:
raise notice ''The number of films: %'', film_count;
为了避免频繁的转义带来复杂度和出错概率,我们使用美元引号来代替:
do
$$
declare
film_count integer;
begin
select count(*) into film_count
from film;
raise notice 'The number of films: %', film_count;
end;
$$