group_concat_max_len = 102400
时间: 2023-07-05 08:30:27 浏览: 189
您的第一个问题是关于 MySQL 中的 `group_concat_max_len` 参数。这个参数用于指定 `GROUP_CONCAT` 函数的最大输出长度。默认情况下,这个值为 1024 字节。如果您需要更大的长度限制,可以通过设置该参数来实现。请注意,如果您将 `group_concat_max_len` 设置得太大,可能会导致内存或性能问题。
相关问题
delimiter $$ CREATE FUNCTION `getChildidList`(rootId varchar(38)) RETURNS text DETERMINISTIC BEGIN DECLARE sTemp text; DECLARE sTempChd text; SET@@group_concat_max_len = 102400; SET sTemp = '$'; SET sTempChd = rootId; WHILE sTempChd IS NOT NULL DO SET sTemp = concat(sTemp, ',', sTempChd); SELECT group_concat(ORGA001) INTO sTempChd FROM hrsw_t_organ WHERE FIND_IN_SET(ORGA002, sTempChd) > 0; END WHILE; SET@@group_concat_max_len = 1024; RETURN SUBSTRING(sTemp,3); END; $$ 使用Oracle重写,Oracle版本为12c
对于这个MySQL函数,可以使用以下语句在Oracle 12c中进行重写:
CREATE OR REPLACE FUNCTION getChildidList(rootId VARCHAR2)
RETURN VARCHAR2
DETERMINISTIC
IS
sTemp VARCHAR2(32767);
sTempChd VARCHAR2(32767);
BEGIN
sTemp := '$';
sTempChd := rootId;
WHILE sTempChd IS NOT NULL LOOP
sTemp := sTemp || ',' || sTempChd;
SELECT LISTAGG(ORGA001, ',') WITHIN GROUP (ORDER BY ORGA001) INTO sTempChd
FROM hrsw_t_organ
WHERE REGEXP_LIKE(sTempChd, '(^|,)'|| ORGA002 ||'(,|$)');
END LOOP;
RETURN SUBSTR(sTemp, 3);
END;
/
需要注意的是,Oracle没有像MySQL一样的group_concat函数,可以使用LISTAGG函数来代替。同时,Oracle中没有FIND_IN_SET函数,可以使用正则表达式来实现类似的功能。在上面的代码中,使用REGEXP_LIKE函数来判断sTempChd是否包含ORGA002。
group_concat_max_len group_concat 最大长度是多少
group_concat_max_len是一个系统变量,用于指定group_concat函数返回结果的最大长度。在MySQL中,默认的group_concat_max_len值是1024,表示group_concat函数返回结果的最大长度是1024个字符。如果需要修改这个值,可以使用以下命令:
```
SET SESSION group_concat_max_len = val;
```
其中,val是你想要设置的最大长度值。请注意,这个值的范围是在4到4294967295之间,如果超出这个范围,会出现错误。同时,如果需要永久修改这个值,可以在my.cnf文件中设置:
```
[mysqld]
group_concat_max_len = val
```
这样,修改的值就会成为默认值,对所有连接都生效。
阅读全文
相关推荐
















