📜  PostgreSQL – 美元引用的字符串常量

📅  最后修改于: 2022-05-13 01:57:15.083000             🧑  作者: Mango

PostgreSQL – 美元引用的字符串常量

在 PostgreSQL 中,美元引用的字符串常量 ( $$ ) 用于用户定义的函数和存储过程。

在 PostgreSQL 中,您对字符串常量使用单引号,如下所示:

select 'String constant';

当字符串常量包含单引号 ( ' ) 时,您需要通过将单引号加倍来转义它。例如:

select 'I''m also a string constant';

如果你使用旧版本的 PostgreSQL,你可以在字符串常量前面加上E来声明后缀转义字符串语法,并使用反斜杠\来转义单引号,如下所示:

select E'I\'m also a string constant';

如果字符串常量包含反斜杠,则需要使用另一个反斜杠对其进行转义。当字符串常量包含许多单引号和反斜杠时,就会出现问题。将每个单引号和反斜杠加倍会使字符串常量更难以阅读和维护。 PostgreSQL 8.0 版引入了美元引用功能,使字符串常量更具可读性。



下面显示了用美元引用的字符串常量的语法:

Syntax: $tag$$tag$

在此语法中,标记是可选的。它可能包含零个或多个字符。在 $tag$ 之间,您可以放置任何带有单引号 (') 和反斜杠 (\) 的字符串。例如:

select $$I'm a string constant that contains a backslash \$$;

在这个例子中,我们没有在两个美元符号 ($) 之间指定标签。以下示例使用带标记的美元引号字符串常量语法:

SELECT $message$I'm a string constant that contains a backslash \$message$;

在此示例中,我们使用字符串message作为两个美元符号 ( $ )之间的标记

例子:

为了演示美元引用常量的使用,让我们创建一个函数,通过film_count ()函数返回示例数据库中电影的总数,即dvdrental ,如下所示:

do 
$$
declare
   film_count integer;
begin 
   select count(*) into film_count
   from film;
   raise notice 'The number of films: %', film_count;
end;
$$;

输出:

示例 2:

以下函数通过其 id 查找电影:

create function find_film_by_id(
   id int
) returns film 
language sql
as 
$$
  select * from film 
  where film_id = id;  
$$;

现在使用以下语句调用该函数:

SELECT find_film_by_id(3);

输出: