PostgreSQL quote_ident() 函数使用指南

PostgreSQL quote_ident() 函数返回适当引用的给定字符串,以用作 SQL 语句字符串中的标识符。

双引号只要在必要的时候才被添加,比如这个字符串中包含不是标识符的字符或者这个字符串是要保留大写字母等。

如果字符串中含有双引号,则会转为两个双引号。比如 a"b 转为 "a""b"

quote_ident() 语法

这里是 PostgreSQL quote_ident() 函数的语法:

quote_ident(string)

参数

string
必需的。需要用做标识符的字符串。

返回值

PostgreSQL quote_ident() 函数返回一个字符串,它被是适当的引用,以可用作 SQL 语句字符串中的标识符。

quote_ident() 示例

基本用法

这个示例演示了如何使用 quote_ident() 函数将一个不合格的标识符转为合格的标识符。

SELECT
    quote_ident('hello world') AS "hello world",
    quote_ident('Hello-world') AS "Hello-world",
    quote_ident('helloWorld') AS "helloWorld",
    quote_ident('HelloWorld') AS "HelloWorld";
  hello world  |  Hello-world  |  helloWorld  |  HelloWorld
---------------+---------------+--------------+--------------
 "hello world" | "Hello-world" | "helloWorld" | "HelloWorld"

这里,字符串 hello world 不是一个合格的标识符,因为它含有空格。 而 quote_ident() 函数的输出 "hello world" 是一个可以用在 SQL 语句中的合格的标识符。其他的字符串也是相同的道理。

适当的引用

双引号只要在必要的时候才被添加。如果参数本来就是一个合格的标识符,则不会添加引号。比如:

SELECT
    quote_ident('hello') AS "hello",
    quote_ident('world') AS "world",
    quote_ident('hello_world') AS "hello_world",
    quote_ident('hello world') AS "hello world";
 hello | world | hello_world |  hello world
-------+-------+-------------+---------------
 hello | world | hello_world | "hello world"

这里,只有 hello world 不是合法的标识符,因此它被双引号引用起来。

内嵌的双引号

如果字符串中含有双引号,则会转为两个双引号。比如 a"b 转为 "a""b"

SELECT quote_ident('Hello"World"');
   quote_ident
------------------
 "Hello""World"""