Oracle データベースにデータをロードおよび挿入しています。漢字のように見える特殊文字に遭遇すると、列の最大サイズを超えたため、行が拒否されたというエラーが発生します。同じ列で同じ長さのように見える英語の文字を含む行では、このエラーは発生しません。SUBSTR および TRIM 関数を使用していますが、機能していません。中国語の文字列の長さが列のサイズを超えているかどうかを判断するにはどうすればよいですか?
3104 次
1 に答える
3
VARCHAR2(XX)
列が[たとえば]として定義されている場合、XXバイトVARCHAR2(20)
を超える長さの文字列を挿入しようとするとエラーが発生します。
この関数は、バイト数ではなく、文字数SUBSTR
で長さを計算します。バイト単位の部分文字列を選択するには、関数を使用します。SUBSTRB
SQL> select substr('ЙЖ', 1, 2) from dual;
SUBSTR('ЙЖ',1,2)
------------------
ЙЖ
SQL> select substrb('ЙЖ', 1, 2) from dual;
SUBSTRB('ЙЖ',1,2)
-------------------
Й
編集:Adamが提案したように、列と変数をとして定義すると、文字演算を使用できますVARCHAR2 (XX CHAR)
。その場合、列はすべての文字セットでXX文字を格納できます(テーブルに格納する場合は最大4000バイト)。
于 2009-11-25T13:36:43.647 に答える