使用运算符“||”的字符串连接或格式()功能
String concatenation using operator "||" or format() function
我们应该在触发器函数中使用连接运算符 ||
还是 format()
函数?
使用一个比另一个有什么优势,还是取决于个人喜好和可读性?
你会说对于简单的连接,使用运算符,而对于更复杂的连接,使用格式函数?
基本上有 4 个用于连接字符串的标准工具。最简单/最便宜的优先:
- returns
NULL
如果任何操作数是 NULL
。 (可能需要也可能不需要。)
- 比
format()
或concat()
快一点。
- 允许连接极少数字符串的最短语法。
- 对输入类型更加挑剔,因为有多个不同的
||
运算符,并且输入类型需要明确以进行运算符类型解析。
- 连接字符串类型是
IMMUTABLE
,这允许它们 safe use in indexes or other places where immutable volatility is required.
concat()
...
- 不 return 如果一个参数为 NULL,则为 NULL。 (可能需要也可能不需要。)
- 对输入类型不那么挑剔,因为所有输入都被强制为
text
。
- 允许连接多个字符串的最短语法。
- 只有函数 volatility
STABLE
(因为它需要 "any"
输入类型并将输入强制转换为文本,其中一些转换取决于与时间相关的设置的区域设置)。所以不适合需要不变的波动性的地方。看:
concat_ws()
(“带分隔符”)...
- 在使用分隔符连接字符串时允许使用最短的语法。
- 只为非空字符串插入一个分隔符,大大简化了这种特殊(常见)情况。
- 在其他方面类似于
concat()
.
format()
...
- 允许在连接变量和常量时使用可读的短代码。
- 提供格式说明符以安全方便地引用字符串和标识符(以防止SQL 注入和语法错误),使其成为动态SQL 的首选。 (你提到触发函数,其中使用了很多动态SQL。)
- 是最复杂的工具。您可以多次重复使用相同的输入(使用不同格式说明符的不同引用)。
如果任何输入参数为 NULL,- 也不会 return NULL。 (可能需要也可能不需要。)
- 也只有波动率
STABLE
。
进一步阅读:
- Combine two columns and add into one new column
- How to concatenate columns in a Postgres SELECT?
- Insert text with single quotes in PostgreSQL
- SQL syntax: Concatenating multiple columns into one
我们应该在触发器函数中使用连接运算符 ||
还是 format()
函数?
使用一个比另一个有什么优势,还是取决于个人喜好和可读性?
你会说对于简单的连接,使用运算符,而对于更复杂的连接,使用格式函数?
基本上有 4 个用于连接字符串的标准工具。最简单/最便宜的优先:
- returns
NULL
如果任何操作数是NULL
。 (可能需要也可能不需要。) - 比
format()
或concat()
快一点。 - 允许连接极少数字符串的最短语法。
- 对输入类型更加挑剔,因为有多个不同的
||
运算符,并且输入类型需要明确以进行运算符类型解析。 - 连接字符串类型是
IMMUTABLE
,这允许它们 safe use in indexes or other places where immutable volatility is required.
concat()
...
- 不 return 如果一个参数为 NULL,则为 NULL。 (可能需要也可能不需要。)
- 对输入类型不那么挑剔,因为所有输入都被强制为
text
。 - 允许连接多个字符串的最短语法。
- 只有函数 volatility
STABLE
(因为它需要"any"
输入类型并将输入强制转换为文本,其中一些转换取决于与时间相关的设置的区域设置)。所以不适合需要不变的波动性的地方。看:
concat_ws()
(“带分隔符”)...
- 在使用分隔符连接字符串时允许使用最短的语法。
- 只为非空字符串插入一个分隔符,大大简化了这种特殊(常见)情况。
- 在其他方面类似于
concat()
.
format()
...
- 允许在连接变量和常量时使用可读的短代码。
- 提供格式说明符以安全方便地引用字符串和标识符(以防止SQL 注入和语法错误),使其成为动态SQL 的首选。 (你提到触发函数,其中使用了很多动态SQL。)
- 是最复杂的工具。您可以多次重复使用相同的输入(使用不同格式说明符的不同引用)。 如果任何输入参数为 NULL,
- 也不会 return NULL。 (可能需要也可能不需要。)
- 也只有波动率
STABLE
。
进一步阅读:
- Combine two columns and add into one new column
- How to concatenate columns in a Postgres SELECT?
- Insert text with single quotes in PostgreSQL
- SQL syntax: Concatenating multiple columns into one