1.1.5 SQLで使用できる文字
SQLで使用できる文字を次の表に示します。
種 別 |
SQLで使用できる文字 |
---|---|
文字列定数 |
半角文字コード(X'00'を除く) |
各国文字列定数 |
全角文字コードのすべての文字 |
混在文字列定数 |
半角文字コード(X'00'を除く),及び全角文字コードのすべての文字 |
上記以外 |
|
SQLで使用できる文字は,pdsetupコマンドで指定した文字コード種別によって異なります。pdsetupコマンドについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。
使用できる文字には,半角文字と全角文字があって,それぞれ使用できるコードが異なります(UNIX版の場合,単一バイト文字コードには全角文字はありません)。指定した文字コード種別と使用する文字の関係は,次のとおりです。
指定した文字コード |
備 考 |
|||
---|---|---|---|---|
複数バイト 文字コード |
sjis※3 (シフトjis漢字) |
JISX0201 |
JISX0208 |
全角文字に外字を含みます。 |
ujis※2 (EUC日本語漢字) |
JISX0201 |
JISX0208 |
全角文字に外字を含みません。※1 |
|
chinese (EUC中国語漢字) |
ISO-8859-1 (80〜FFを除きます) |
GB2312-80 |
全角文字に外字は含みません。※1 |
|
utf-8※3※4※6 (Unicode(UTF-8)) |
JISX0221 |
JISX0221 |
全角文字に外字を含みます。ASCIIコードの範囲では,ほかの文字コードと差異はありませんが,1文字が6バイト※5となることがあります。 |
|
MS-Unicode |
MS-Unicode |
|||
utf-8_ivs※3※4※6 (Unicode(IVS対応UTF-8)) |
JISX0221 |
JISX0221 |
全角文字に外字を含みます。ASCIIコードの範囲では,ほかの文字コードと差異はありませんが,1文字が10バイト※5となることがあります。 |
|
MS-Unicode |
MS-Unicode (異体字を含む) |
|||
chinese-gb18030 (中国語漢字GB18030) |
ISO-8859-1 (80〜FFを除きます) |
GB18030-2000 |
全角文字に外字を含みます。ASCIIコードの範囲では,ほかの文字コードと差異はありませんが,1文字が4バイトになることがあります。 |
|
単一バイト 文字コード |
lang-c※2 (8ビットコード) |
各コードに従います。 |
− |
US ASCII,及び8ビットコードの場合に使用できます。 |
- (凡例)
-
−:該当する内容はありません。
- 注※1
-
EUCコードセット3((8F)16(xxxx)16の3バイトで表現される文字コード)に割り当てられた外字コードは使用できません。
- 注※2
-
Windows版の場合は使用できません。
- 注※3
-
JavaのUAPとHiRDB,又はHiRDBとJavaルーチンの間で,日本語データをStringクラス及びそれを継承したクラスを介して受け渡す場合,Javaの文字コードのマッピング規則(該当する文字コードとUnicode)に従います。このとき,外字コードが正しく変換されないことがあるため,注意してください。
- 注※4
-
HiRDBでは,UTF-8のエンコードルールだけを意識し,コードと文字のマッピングについては意識していません。このため,UTF-8のエンコードルールに従った文字を使用できます。ただし,文字コード変換では文字セットとエンコードルールの関係を意識する必要があるため,HiRDBクライアントの文字コードがSJISでHiRDBサーバの文字コードがUTF-8の場合,クライアント環境定義のPDCLTCNVMODEを指定するときは,JISX0221,又はMS-Unicodeのどちらを使用しているか意識する必要があります。PDCLTCNVMODEについては,マニュアル「HiRDB UAP開発ガイド」を参照してください。
- 注※5
-
4バイト以上の文字を使用する場合は,システム定義のpd_substr_lengthオペランド及びクライアント環境定義PDSUBSTRLENの設定が必要な場合があります。pd_substr_lengthオペランドについては,マニュアル「HiRDB システム定義」を参照してください。PDSUBSTRLENについては,マニュアル「HiRDB UAP開発ガイド」を参照してください。
なお,ISO/IEC 10646では,文字が割り当てられているのは1文字1〜4バイト(utf-8_ivsの場合は,1〜4,7及び8バイト)の範囲です。5及び6バイト(utf-8_ivsの場合は,5,6,9及び10バイト)の範囲は将来の規格のために予約されており,文字が割り当てられていません。したがって,文字が割り当てられていない1文字5,6バイト(utf-8_ivsの場合は,5,6,9及び10バイト)の範囲を使用した場合は,将来発生するかもしれない問題について保証できません。
- 注※6
-
utf-8とutf-8_ivsでは,字形の種類を表すコード(VS(Variation Selector):字形選択子)の扱いが異なります。utf-8の場合,基底文字とVSはそれぞれ別の一つの文字として扱い,utf-8_ivsの場合,基底文字とVSを合わせて1文字として扱います。そのため,utf-8の場合は1文字の長さが1〜6バイトになりますが,utf-8_ivsの場合は1文字の長さが1〜10バイトになります。