gpt4 book ai didi

postgresql - 使用运算符 "||"或 format() 函数连接字符串

转载 作者:行者123 更新时间:2023-12-04 07:59:00 24 4
gpt4 key购买 nike

我们是否应该使用连接运算符 ||format()触发函数中的函数?
使用其中一个有什么优势,还是归结为个人喜好和可读性?
你会说对于简单的连接,使用运算符,但对于更复杂的连接,使用格式函数?

最佳答案

基本上有 4 个用于连接字符串的标准工具。最简单/最便宜的优先:
concatenation operator || ...

  • 返回 NULL如果任何操作数是 NULL . (可能需要也可能不需要。)
  • format() 快一点或 concat() .
  • 允许连接极少数字符串的最短语法。
  • 对输入类型更加挑剔,因为有多种不同的||运算符,并且输入类型对于运算符类型解析需要是明确的。
  • 连接字符串类型是 IMMUTABLE ,这允许他们的safe use in indexes or other places where immutable volatility is required .

  • concat() ...
  • 如果一个参数为 NULL,则不返回 NULL。 (可能需要也可能不需要。)
  • 对输入类型不那么挑剔,因为所有输入都被强制为 text .
  • 允许连接多个字符串的最短语法。
  • 仅具有函数波动性STABLE (因为它采用 "any" 输入类型并将输入强制转换为文本,并且其中一些转换取决于与时间相关的设置的语言环境)。所以不适合需要不可变波动性的地方。看:
  • CONCAT used in INDEX causes ERROR: functions in index expression must be marked IMMUTABLE


  • concat_ws() (“带分隔符”)...
  • 使用分隔符连接字符串时允许使用最短的语法。
  • 仅为非空字符串插入分隔符,从而大大简化了特定(常见)情况。
  • 否则就像 concat() .

  • format() ...
  • 在连接变量和常量时允许可读的短代码。
  • 提供格式说明符以安全方便地引用字符串和标识符(以防止 SQL 注入(inject)和语法错误),使其成为动态 SQL 的首选。 (您提到 触发函数 ,其中使用了大量动态 SQL。)
  • 是最精密的工具。您可以多次重复使用相同的输入(使用不同的格式说明符使用不同的引号)。
  • 如果任何输入参数为 NULL,也不会返回 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
  • 关于postgresql - 使用运算符 "||"或 format() 函数连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66555257/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com