写点什么

YashanDB WM_CONCAT 函数

作者:YashanDB
  • 2025-08-13
    广东
  • 本文字数:853 字

    阅读完需:约 3 分钟


WM_CONCAT 函数将多行的数据执行拼接操作,并通过分隔符分隔,返回一行 CLOB 类型的字符串。该函数与GROUP_CONCAT函数实现功能类似,区别在于 WM_CONCAT 不能指定 SEPARATOR 分隔符(固定为,),且不能指定 ORDER BY 排序。

DISTINCT

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

ALL

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

string

string 可以为:

  • 通用表达式expr

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

string 的值为字符型,或可转换为字符型的其他类型,但不允许为 JSON、NVARCHAR、NCHAR 和 NCLOB 类型。

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

在单行计算中,当 string 的值为 NULL 时,函数返回 NULL。

在多行计算中,函数将忽略 string 值为空的行,当所有行均为空时,计算结果为 NULL。存在多个拼接行时,会将多行的结果使用分隔符,分隔开来。

示例

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


用户头像

YashanDB

关注

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

还未添加个人简介

评论

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