写点什么

YashanDB STRING_AGG 函数

作者:YashanDB
  • 2025-08-01
    广东
  • 本文字数:1201 字

    阅读完需:约 4 分钟

STRING_AGG 函数将多行的数据执行拼接操作,并通过分隔符分隔,返回一行 CLOB 类型的字符串。本函数与GROUP_CONCAT函数实现功能类似。

本函数不支持向量化计算。

DISTINCT

计算最终拼接结果时,过滤在同一组内出现的重复的行。

ALL

默认值,表示不过滤重复的行,对所有行都进行拼接。

string

string 可以为:

  • 通用表达式expr

  • 查询列为单列且返回行为单行的子查询

string 的值须为字符型,或可转换为字符型的其他类型(LOB、XMLTYPE 类型支持隐式转换),但不允许为 JSON、NVARCHAR、NCHAR 和 NCLOB 类型。

当 string 的值为 NULL 时,函数返回 NULL。

separator

指定将组内的多行进行拼接时,多行之间加上 separator 定义的分隔符,separator 为 character 类的常量或常量表达式。

separator 必须指定,但可以指定为 NULL。

order_by_clause

对组内要 CONCAT 的 string 排序,其语法与 SELECT 语句中描述一致。

当 ORDER BY 后指定的是常量数字时,表示的是 string 的顺序值。

示例(HEAP 表)

--创建exprs_string_agg表,并插入数据CREATE TABLE exprs_string_agg (id INT,name VARCHAR(50),money FLOAT);INSERT INTO exprs_string_agg VALUES  (1,'小东',10000),(2,'小明',46450),        (3,'小红',46450 ),(4,'小东',14465),        (5,'小明',46450),(6,'小东',46450);
--未指定GROUP BY时,将所有行CONCAT,得到一行结果SELECT STRING_AGG(MONEY,',') AS money FROM exprs_string_agg;MONEY ---------------------------------------------------------------- 1.0E+004,4.645E+004,4.645E+004,1.4465E+004,4.645E+004,4.645E+004
--group by后各组的多行数据分别CONCAT成一行,得到按组的多行结果SELECT NAME,STRING_AGG(money,',') AS money FROM exprs_string_agg GROUP BY name;NAME MONEY -------------------------- ------------------------------------ 小东 1.0E+004,1.4465E+004,4.645E+004 小明 4.645E+004,4.645E+004 小红 4.645E+004
--使用order by子句排序SELECT NAME,STRING_AGG(money,',' ORDER BY id DESC) AS money FROM exprs_string_agg GROUP BY name;NAME MONEY ------------------------ ------------------------------------小东 4.645E+004,1.4465E+004,1.0E+004 小明 4.645E+004,4.645E+004 小红 4.645E+004
--使用DISTINCT关键字去重SELECT STRING_AGG(DISTINCT name,',') AS names FROM exprs_string_agg;NAMES----------------------------------------------------------------小东,小明,小红
复制代码


用户头像

YashanDB

关注

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

还未添加个人简介

评论

发布
暂无评论
YashanDB STRING_AGG函数_数据库_YashanDB_InfoQ写作社区