为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:linux
【CPU】:x86
【问题描述】*:mysql语句如下
SELECT
FundId,
max( LotSize ) AS LotSize,
max( CashDifference ) AS CashDifference,
GROUP_CONCAT( CONCAT( Symbol, ';', Quantity, ';', OverrideAmount, ';', IFNULL( AdditionalProp, '' ) ) SEPARATOR '|' ) AS EtfInfo
FROM
GenusETFInfo
WHERE
TheDate = 20240320
GROUP BY
FundId
做了SET SESSION group_concat_max_len = 4294967295
达梦的sql如下
SELECT
FundId,
MAX(LotSize) AS LotSize,
MAX(CashDifference) AS CashDifference,
LISTAGG(
SUBSTR(CONCAT(Symbol, ';', Quantity, ';', OverrideAmount, ';', IFNULL(AdditionalProp, '')), 1, 1000000), -- 假设最大长度为 1000 字符
'|'
) WITHIN GROUP (ORDER BY Symbol) AS EtfInfo
FROM
GenusETFInfo
WHERE
TheDate = 20240320
GROUP BY
FundId;
这边报字符串截断。当前CONCAT字段能否加大它的长度
用listagg2试下,用法一样,listagg2返回的是CLOB类型,listagg返回的是varchar有长度限制,超了会截断