简介
Dollar Quoting($)用于指定字符串常量的标准语法,但是当字符串中包含了很多单引号或反斜线时,因为每一个都需要被双写。要在这种情形下允许可读性更好的查询,PG提供了另一种被称为“美元引用($)”的方式来书写字符串常量。一个美元引用的字符串常量由一个美元符号($)、一个可选的另个或更多字符的“标签”、另一个美元符号、一个构成字符串内容的任意字符序列、一个美元符号、开始这个美元引用的相同标签和一个美元符号组成。
例如,这里有两种不同的方法使用美元引用指定字符串“Dianne's horse”:
$$Dianne's horse$$
$SomeTag$Dianne's horse$SomeTag$
复制
Dollar Quoting($)实战
AS 后面是函数的代码部分。
$$ 实际代码的开始,当遇到下一个 $$ 的时候,为代码的结束
最后就是 LANGUAGE plpgsql;
postgres=# CREATE OR REPLACE FUNCTION HelloWorld4() RETURNS varchar AS
postgres-# $$
postgres$# BEGIN
postgres$# RETURN 'Hello World!';
postgres$# END;
postgres$# $$
postgres-# LANGUAGE plpgsql;
CREATE FUNCTION
复制
美元符号并不特定于函数定义。它几乎可以用于替换SQL脚本中的任何位置的单引号。
函数体恰好是一个字符串,必须用单引号括起来。美元引用是PostgreSQL特定的单引号替代,以避免在函数体内引用问题。
CREATE OR REPLACE FUNCTION test123(text)
RETURNS boolean
AS
$func$
BEGIN
...
END
$func$ LANGUAGE plpgsql STRICT IMMUTABLE;
复制
$$是一个分隔符,用于指示函数定义的开始和结束位置。
create function语法类似,但是因为你要在你的函数中使用各种SQL(特别是语句的结尾;字符),如果你没有分隔它,解析器就会跳转。
CREATE OR REPLACE FUNCTION check_phone_number(text)
RETURNS boolean AS <code delimited by $$> LANGUAGE plpgsql STRICT IMMUTABLE;
复制
postgres=# select count(*) from pg_class where relkind=$$v$$;
count
-------
125
(1 row)
postgres=# select count(*) from pg_class where relkind='v';
count
-------
125
(1 row)
复制
跟随在一个美元符号($)后面的数字被用来表示在一个函数定义或一个预备语句中的位置参数。
在其他上下文中该美元符号可以作为一个标识符或者一个美元引用字符串常量的一部分。
select count(*) from pg_class where relkind=$test$t$tabc$;
复制
参考
https://www.postgresql.org/about/featurematrix/#backend
https://www.postgresql.org/docs/current/sql-syntax-lexical.html
文章转载自CP的PostgreSQL厨房,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
9.9 分高危漏洞,尽快升级到 pgAdmin 4 v9.2 进行修复
严少安
339次阅读
2025-04-11 10:43:23
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
322次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
284次阅读
2025-04-07 12:14:29
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
244次阅读
2025-04-21 16:58:09
postgresql+patroni+etcd高可用安装
necessary
154次阅读
2025-03-28 10:11:23
从 Oracle 到 PostgreSQL迁移成本评估揭秘
梧桐
146次阅读
2025-03-27 17:21:42
手把手教你在 openKylin 上部署 IvorySQL 4.4
严少安
144次阅读
2025-03-27 20:41:28
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
141次阅读
2025-04-14 15:58:34
墨天轮PostgreSQL认证证书快递已发(2025年3月批)
墨天轮小教习
124次阅读
2025-04-03 11:43:25
从Percona 发布Pro级产品得到的一些启发
库海无涯
121次阅读
2025-03-26 08:45:23