ORA-01489: 문자열 연결 결과가 너무 깁니다
단일 보기에서 필드를 연결하고 LISTAGG 함수를 사용하려고 하면, "ORA-01489: 문자열 연결 결과가 다음과 같습니다."라는 오류가 발생할 수 있습니다. long."
원인:
이 오류는 LISTAGG 함수에 적용되는 SQL 제한인 4000바이트를 초과했음을 나타냅니다.
해결 방법 1: XMLAGG
이 문제를 해결하려면 제한 사항이 있으므로 LISTAGG 대신 XMLAGG 함수를 사용할 수 있습니다. XMLAGG는 더 큰 연결 결과를 허용합니다. 예:
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 )
해결 방법 2: 연결 출력 제한
연결된 결과가 큰 경우 rtrim 및 substr 함수 조합을 사용하여 제한할 수 있습니다. 예:
SELECT rtrim(substr(text1 || '-' || text2, 1, 3999)) || ', ' FROM source
해결 방법 3: XMLAGG 결과 연결
각각 4000바이트인 여러 열을 연결해야 하는 경우 각 열의 XMLAGG 출력을 연결합니다. . 예:
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;
위 내용은 ORA-01489 처리 방법: Oracle에서 문자열 연결 결과가 너무 깁니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!