Maison > base de données > tutoriel mysql > Comment gérer ORA-01489 : le résultat de la concaténation de chaînes est trop long dans Oracle ?

Comment gérer ORA-01489 : le résultat de la concaténation de chaînes est trop long dans Oracle ?

Mary-Kate Olsen
Libérer: 2025-01-03 06:11:39
original
355 Les gens l'ont consulté

How to Handle ORA-01489: Result of String Concatenation is Too Long in Oracle?

ORA-01489 : Le résultat de la concaténation de chaînes est trop long

Lorsque vous essayez de concaténer des champs et d'utiliser la fonction LISTAGG dans une seule vue, vous pouvez rencontrer l'erreur « ORA-01489 : le résultat de la concaténation de chaînes est également long."

Cause :

Cette erreur indique que vous avez dépassé la limite SQL de 4000 octets, qui s'applique à la fonction LISTAGG.

Solution 1 : XMLAGG

Pour contourner cette limitation, vous pouvez utiliser XMLAGG fonction au lieu de LISTAGG. XMLAGG permet d'obtenir des résultats concaténés plus volumineux. Par exemple :

SELECT rtrim(xmlagg(XMLELEMENT(e,text,',').EXTRACT('//text()')
.GetClobVal(),',') very_long_text
FROM
(SELECT to_char(to_date(level,'j'), 'jsp') text FROM dual CONNECT BY LEVEL < 250
)
Copier après la connexion

Solution de contournement 2 : limiter la sortie concaténée

Si votre résultat concaténé est volumineux, vous pouvez le limiter à l'aide d'une combinaison de fonctions rtrim et substr. Par exemple :

SELECT rtrim(substr(text1 || '-' || text2, 1, 3999)) || ', '
FROM source
Copier après la connexion

Solution de contournement 3 : concaténer les résultats XMLAGG

Si vous devez concaténer plusieurs colonnes contenant chacune 4 000 octets, concaténez la sortie XMLAGG de chaque colonne. . Par exemple :

SELECT ID,
rtrim(xmlagg(XMLELEMENT(e,col1,',').EXTRACT('//text()') ).GetClobVal(), ',')
||
rtrim(xmlagg(XMLELEMENT(e,col2,',').EXTRACT('//text()') ).GetClobVal(), ',')
AS very_long_text
FROM DATA
GROUP BY ID
ORDER BY ID;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal