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
422 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!

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