quote_literal()
是一个系统函数,它将任意输入格式化为适当的带引号和转义的 SQL 字符串字面量。
quote_literal()
在 PostgreSQL 7.1 中添加。
用法
quote_literal ( text ) → text
quote_literal ( anyelement ) → text
quote_literal()
通常与 quote_nullable()
和 quote_ident()
一起在 PL/pgSQL 中使用,以使用变量生成动态查询。
更改历史记录
- PostgreSQL 7.1
- 添加 (提交 daf1e3a7)
示例
quote_literal()
的基本用法示例
postgres=# SELECT quote_literal(1.2), quote_literal(array[1,2]); quote_literal | quote_literal ---------------+--------------- '1.2' | '{1,2}' (1 row)
在 PL/pgSQL
中使用
postgres=# CREATE TABLE foo (val TEXT); CREATE TABLE postgres=# CREATE OR REPLACE FUNCTION littest ( someval TEXT ) RETURNS VOID LANGUAGE plpgsql AS $$ BEGIN EXECUTE 'INSERT INTO foo VALUES (' || quote_literal(someval) || ')'; END; $$; CREATE FUNCTION postgres=# SELECT littest('bar'); littest --------- (1 row) postgres=# SELECT * FROM foo; val ----- bar (1 row)
请注意,在上面的示例中,如果 someval 可能会包含 NULL
值,则应使用 quote_nullable()
,否则在连接的 EXECUTE
字符串中出现 NULL
值将导致整个字符串变为 NULL
并引发错误。
参考
- PostgreSQL 文档: 其他字符串函数