写点什么

YashanDB CONCAT 函数

作者:YashanDB
  • 2025-04-22
    广东
  • 本文字数:819 字

    阅读完需:约 3 分钟

CONCAT 函数将多个expr的值连接成一个字符串,expr 的个数最少为 2 个,最多为 65535 个。

本函数等同于:expr||expr||...。

本函数遵循如下规则:

  • 对于非字符型/CLOB 类型的 expr 值,函数先进行到 CHAR 类型的转换,如类型转换不成功,则返回类型转换错误。

  • 参数类型优先级:

    当 expr 值中不存在 CLOB、NCLOB 类型时:

    仅包含 CHAR/NCHAR 类型数据时,函数返回 CHAR/NCHAR 类型的字符串。

    仅包含 CHAR 和 VARCHAR 类型数据时,函数返回 VARCHAR 类型的字符串。

    仅包含 CHAR 和 NCHAR 类型数据时,函数返回 NCHAR 类型的字符串。

    存在 NVARCHAR 类型数据时,函数返回 NVARCHAR 类型的字符串。

    不包含 NVARCHAR 类型数据,但存在 VARCHAR 和 NCHAR 类型时,函数返回 NVARCHAR 类型的字符串。

    当 expr 值中存在 CLOB 或 NCLOB 时,通过如下三个规则判断返回的数据类型:

    规则 1:当参数列表中只有一个 CLOB 时,如果前面不包含 NCHAR、NVARCHAR 数据,则返回 CLOB,否则返回 NCLOB。

    规则 2:当参数列表中只有一个 NCLOB 时,如果前面包含 NCHAR、NVARCHAR 数据或者没有其他参数,则返回 NCLOB,否则返回 CLOB。

    规则 3:当有多个 CLOB 或这 NCLOB 时,则以参数列表中从左往右的第一个 CLOB 或者 NCLOB 作为唯一的 CLOB 或者 NCLOB 代入上述规则 1 或者规则 2。

  • 当 expr 值为 NULL 时,函数将其转换为长度为 0 的 VARCHAR 字符串。

对于列存表中的 CLOB 类型字段,若某行数据为行外存储,则无法使用本函数。

示例

SELECT CONCAT(employee_name,' has joined us for ',CEIL(SYSDATE-entry_date),' days.') res FROM employees;RES                                                               ----------------------------------------------------------------Mask has joined us for 1001 days.                              John has joined us for 2001 days.                              Anna has joined us for 301 days.                               Jack has joined us for 701 days.                               Jim has joined us for 201 days.
复制代码


用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB CONCAT函数_yashandb_YashanDB_InfoQ写作社区