Postgresql 使用运算符“连接字符串”||&引用;或format()函数
我们应该在触发器函数中使用串联运算符Postgresql 使用运算符“连接字符串”||&引用;或format()函数,postgresql,concatenation,dynamic-sql,Postgresql,Concatenation,Dynamic Sql,我们应该在触发器函数中使用串联运算符|还是格式()函数 使用其中一种方法比另一种方法有什么优势吗?还是取决于个人偏好和可读性 对于简单的连接,使用运算符,但是对于更复杂的连接,使用format函数?基本上有4种用于连接字符串的标准工具。最简单/最便宜的优先: 这个 如果任何操作数为NULL,则返回NULL。(可能需要,也可能不需要。) 比format()或concat()快一点 允许对极少数要连接的字符串使用最短语法 对于输入类型更为挑剔,因为存在多个不同的|运算符,并且输入类型需要明确,才能
|
还是格式()
函数
使用其中一种方法比另一种方法有什么优势吗?还是取决于个人偏好和可读性
对于简单的连接,使用运算符,但是对于更复杂的连接,使用format函数?基本上有4种用于连接字符串的标准工具。最简单/最便宜的优先: 这个
- 如果任何操作数为
,则返回NULL
。(可能需要,也可能不需要。)NULL
- 比
或format()
快一点concat()
- 允许对极少数要连接的字符串使用最短语法
- 对于输入类型更为挑剔,因为存在多个不同的
运算符,并且输入类型需要明确,才能解析运算符类型|
- 串接字符串类型是不可变的,这允许
- 如果一个参数为NULL,则不返回NULL。(可能需要,也可能不需要。)
- 由于所有输入都强制为
,因此对输入类型不太挑剔文本
- 允许连接多个字符串的最短语法
- 只具有函数volatility
(因为它采用STABLE
输入类型并强制将输入转换为文本,其中一些转换取决于与时间相关的设置的区域设置)。因此,不适用于需要不可变波动性的情况。见:“any”
- 使用分隔符连接字符串时允许最短语法
- 仅为非空字符串插入分隔符,从而大大简化了特定(频繁)情况
- 否则类似于
concat()
- 在连接变量和常量时,允许使用可读的短代码
- 提供格式说明符,以安全方便地引用Sting和标识符(防止SQL注入和语法错误),使其成为动态SQL的首选。(您提到了触发器函数,其中使用了大量动态SQL。)
- 是最复杂的工具。您可以多次重复使用相同的输入(使用不同的格式说明符使用不同的引用)
- 如果任何输入参数为NULL,也不会返回NULL。(可能需要,也可能不需要。)
- 也只有波动性
稳定