域名 AXUM.RS 将于2025年10月到期。我们无意再对其进行续费,我们希望你能够接续这个域名,让更多 AXUM 开发者继续受益。
  • 方案1️⃣AXUM.RS 域名 = 3000
  • 方案2️⃣方案1️⃣ + 本站所有专题原始 Markdown 文档 = 5000
  • 方案3️⃣方案2️⃣ + 本站原始数据库 = 5500
如果你有意接续这份 AXUM 情怀,请与我们取得联系。
说明:
  1. 如果有人购买 AXUM.RS 域名(方案1️⃣),或者该域名到期,本站将启用新的免费域名继续提供服务。
  2. 如果有人购买了 AXUM.RS 域名,且同时购买了内容和/或数据库(方案2️⃣/方案3️⃣),本站将关闭。届时我们或许会以另一种方式与你再相遇。

以美元符号作为引号的字符串常量

本章将讨论如何在 PL/pgSQL 编程中使用以美元符号作为引号的字符串常量。

背景

SELECT '你好,世界';

当字符串本身包含单引号时,需要进行转义:

SELECT '他说:''你好,世界''。';

为了减少转义,让字符串常量更具可读性,PostgreSQL 加入了使用以美元符号作为引号的语法。

以美元符号作为引号

语法:

  • tag:可选,可以是零个或多个字符串
  • 字符串常量:可以放置任何字符,包括单引号、反斜杠等

上例中,我们没有设置 tag,我们可以设置 tag 试试:

SELECT $dir$目录:c:\'Program Files'\Google$dir$;

此例中,我们设置 tagdir

为简化描述,我们将”以美元符号作为引号“简称为”美元引号“或者”DQ“

在匿名块中使用美元引号

do 
'declare
   film_count integer;
begin 
   select count(*) into film_count
   from film;
   raise notice ''The number of films: %'', film_count;
end;';
  • 你可以在后续章节了解匿名块。你可以把以上代码复制到 psqldbeaver 中执行

  • 块中的代码必须用单引号括起来。如果代码内部也有单引号,必须进行转义:

    raise notice ''The number of films: %'', film_count;
    

块中的代码必须用单引号括起来。如果代码内部也有单引号,必须进行转义:

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;
$$
要查看完整内容,请先登录