DDLでCODEUNIT32(CHAR SET =“ UTF-32”を確立するにはどうすればよいですか?


1

VARCHAR(120)になりますが、実際には480バイトを格納する列の要求をモデル化しようとしています。

480の長さは、VARCHAR(120)= 120 x 4 = 480バイトとして確立されます。これは、文字列単位の仕様コード単位32によるものです。つまり、1文字ごとに4バイトを消費します。

DDLの構文がわかりません。私の調査では、文字セットをUTF-32に設定する表の作成中にステートメントが必要であることが示されていますが、私は不確かです。これは、DB2中間層(非メインフレーム)用です

ここに私が見つけたものがありますが、それが有効であるか、どのようにCOLLATE機能するかはわかりません。

ALTER TABLE table_name   
MODIFY column_name VARCHAR(255) 
CHARACTER SET utf8 
COLLATE utf8_unicode_ci;

助けていただければ幸いです!

回答:


0

タイプUTF-32の列を宣言する方法はありません。

列をとして定義し、列に アクセスVARCHAR(480)するCODEUNITS32たびに使用して、UTF-32にキャストする必要があります。

例:

SELECT CHARACTER_LENGTH(NAME,CODEUNITS32) FROM T1 WHERE NAME = 'Jürgen';
SET :POSITION = LOCATE_IN_STRING('Jürgen lives on Hegelstraße','ß',-1,CODEUNITS32);

いくつかのIBM参照:


-1

DB2 LUWの場合、単に列をとして宣言しますVARCHAR(120 CODEUNITS32)。Db2は、データをUTF-8として保存し、最大120文字まで許可しますが、最大480バイトまで許可します。

create table T(C VARCHAR(e CODEUNITS32))
insert into t values '€£😃'
select c, hex(c), lengthb(c),length(c) from t

C    2                  3 4
---- ------------------ - -
€£😃 E282ACC2A3F09F9883 9 3

https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0008470.html


私の答えを投票した人に。理由をコメントしていただけますか?私の答えは間違っていますか?
ポールヴァーノン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.