串联运算符

串联运算符是二元运算符,在 SQL 表达式 的通用图中展示其语法。您可使用串联运算符(||)来串联两个求值为字符数据类型或数值数据类型的两个表达式。这些示例展示一些可能的串联的表达式组合。
  • 第一个示例将 zipcode 列串联到 lname 列的前三个字母。
  • 第二个示例将后缀 .dbg 串联到名为 file_variable 的主变量的内容。
  • 第三个示例将 TODAY 运算符返回的值串联到字符串 Date
    lname[1,3] || zipcode 
                    
                    :file_variable || '.dbg'
                    
                    'Date:' || TODAY  
您不可在下列嵌入式语言语句中使用串联运算符:
  • ALLOCATE COLLECTION
  • ALLOCATE DESCRIPTOR
  • ALLOCATE ROW
  • CREATE FUNCTION FROM
  • CREATE PROCEDURE FROM
  • CREATE ROUTINE FROM
  • DEALLOCATE COLLECTION
  • DEALLOCATE DESCRIPTOR
  • DEALLOCATE ROW DESCRIBE
  • DESCRIBE INPUT
  • EXECUTE
  • FLUSH
  • GET DESCRIPTOR
  • GET DIAGNOSTICS
  • PUT
  • SET AUTOFREE
  • SET CONNECTION
  • SET DESCRIPTOR
  • WHENEVER
除非 DECLARE 和 PREPARE 语句另有注明,在下列动态 SQL 语句中,以诸如 GBase 8s ESQL/C 语言这样的外部语言编写的例程不可使用串联运算符:
  • CLOSE
  • DECLARE
  • EXECUTE IMMEDIATE
  • FETCH
  • FREE
  • OPEN
  • PREPARE

虽然诸如 cursor_id 规范这样的 DECLARE 语句的输入参数不可为包括串联运算符的表达式,但 GBase 8s ESQL/C 例程可在 DECLARE 语句内的 SELECT、INSERT、EXECUTE FUNCTION 或 EXECUTE PROCEDURE 语句中使用此运算符。

GBase 8s ESQL/C 例程可在 SQL 语句的文本中或在您传递到 PREPARE 语句的语句中使用串联运算符。

在 SPL 例程中,您可在指定传递到 EXECUTE IMMEDIATE 语句或 PREPARE 语句的 SQL 语句的文本的表达式中包括串联运算符,即使该 SPL 例程的调用上下文是一 GBase 8s ESQL/C 例程。

您不可随同用户定义的数据类型、随同复合的或大对象数据类型直接地使用串联运算符,也不可随同非内建的字符或数值数据类型的运算对象使用。在您可将结果传递到串联运算符之前,您必须将 UDT 或其他被支持的数据类型显式地强制转型为内建的字符或数值数据类型。

串联运算的结果的数据类型依赖于运算对象的数据类型以及结果字符串的长度,使用 从 CONCAT 函数的返回类型 部分描述的返回类型提升规则。

串联运算符(||)有相关联的名为 CONCAT 的运算符函数。不可重载 CONCAT 函数。

当您定义基于文本的 UDT 时,您可定义 CONCAT 函数来串联用户定义的数据类型的对象。要获取更多信息,请参阅 GBase 8s 用户定义的例程和数据类型开发者指南