9.2.52 文字コードに関するオペランド
- ◆ pd_substr_length = 3|4|5|6|7|8|9|10
-
セットアップした文字コード種別によって,推奨値と指定できる値の範囲が異なります。セットアップした文字コード種別と,対応する推奨値,指定できる値を次に示します。
セットアップした文字コード種別
推奨値
指定できる値
utf-8
4
3〜6
utf-8_ivs
8
3〜10
上記以外(このオペランドは無効)
−
−
- (凡例)
-
−:このオペランドは無効となるため値はありません。
このオペランドは,文字コード種別をutf-8,又はutf-8_ivsでセットアップした場合に有効で,スカラ関数SUBSTRの結果の長さに影響します。
スカラ関数SUBSTRについては,マニュアル「HiRDB Version 9 SQLリファレンス」を参照してください。
- 《指定値の目安》
-
UCS-2の範囲の文字(1〜3バイト)だけを使用する場合は,このオペランドを省略できます。
UCS-4の範囲の文字を使用する場合は,1文字を表現する最大バイト数を指定します。ISO/IEC 10646の規格では文字が割り当てられているのは,UTF-8の場合1文字1〜4バイト,IVS対応UTF-8の場合1文字1〜4,7,又は8バイトです。指定値はそれぞれの最大バイト数を推奨します。
ただし,実際に使用している1文字を表現するバイト数以上の値を指定すると,スカラ関数SUBSTRの結果が長くなることがあるため,使用している文字コードに基づいて指定値を検討してください。
- 《注意事項》
-
-
ISO/IEC 10646の規格は,1文字当たり1〜4バイト(IVS対応UTF-8では1〜4,7,又は8バイト)の範囲に文字が割り当てられ,5,6バイト(IVS対応UTF-8では5,6,9,又は10バイト)の範囲は将来の規格のために予約されています。HiRDBでは1文字当たり1〜6バイト(IVS対応UTF-8では1〜10バイト)の範囲まで使用できますが,文字が割り当てられていない5,6バイト(IVS対応UTF-8では5,6,9,又は10バイト)の範囲を使用する場合,将来発生するおそれのある問題については保証できません。
-
バージョン06-02でサポートしたUnicode(UTF-8)は,1文字を表現する最大バイト数は3バイトの範囲まで使用できます。バージョン08-00からは,最大6バイトの範囲まで使用できます。バージョン09-50でサポートした文字コード種別utf-8_ivsは,1文字を表現する最大バイト数が10バイトの範囲まで使用できます。そのため,データによっては1文字を表現するバイト数が大きくなることがあります。
-
次の条件をすべて満たしている場合は,ルーチンのSQLオブジェクトの再作成やビュー表の再定義をする必要があります。
・文字コード種別をutf-8,又はutf-8_ivsでセットアップしている
・新規でpd_substr_lengthオペランドの指定値に3以外を指定する,又は既にpd_substr_lengthオペランドを指定している環境で,ルーチンやビュー表を定義し,かつpd_substr_lengthオペランドの指定値を変更する
・混在文字列型(MCHAR,MVARCHAR)を引数に指定したスカラ関数SUBSTRをルーチンやビュー定義に指定する
ただし,クライアント環境定義のPDSUBSTRLENオペランドを指定してコネクション単位に制御したり,SQLコンパイルオプションのSUBSTR LENGTHの指定によってルーチン単位で制御したりもできます。
-
文字コード種別をutf-8,又はutf-8_ivsでセットアップしている場合のpd_substr_lengthオペランドと,そのほかのオペランドの指定値との優先順位を次に示します。
ルーチン単位で制御する場合
制御のタイミング
pd_substr_lengthオペランド
クライアント環境定義
PDSUBSTRLEN
SQLコンパイルオプション
SUBSTR LENGTH
備考
定義時
有効(2)
無効
有効(1)
省略値
pd_substr_length
コール時又は関数呼出し時
無効
(定義時の指定に従う)
無効
(定義時の指定に従う)
−
特になし
(凡例)
( ):優先順位
−:指定できません。
ビュー表単位で制御する場合
制御のタイミング
pd_substr_lengthオペランド
クライアント環境定義
PDSUBSTRLEN
SQLコンパイルオプション
SUBSTR LENGTH
備考
定義時
有効(2)
有効(1)
−
省略値
pd_substr_length
操作時
無効
(定義時の指定に従う)
無効
(定義時の指定に従う)
−
特になし
(凡例)
( ):優先順位
−:指定できません。
-