ホームページ > データベース > mysql チュートリアル > Oracle で ORA-01489: 文字列連結の結果が長すぎる場合の対処方法

Oracle で ORA-01489: 文字列連結の結果が長すぎる場合の対処方法

Mary-Kate Olsen
リリース: 2025-01-03 06:11:39
オリジナル
355 人が閲覧しました

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

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;
ログイン後にコピー

以上がOracle で ORA-01489: 文字列連結の結果が長すぎる場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート