構文
用途
CHR
は、データベース・キャラクタ・セットまたは各国語キャラクタ・セット(USING
NCHAR_CS
を指定している場合)の中のn
に等しい2進数を持つ文字を、VARCHAR2
値として戻します。
シングルバイト・キャラクタ・セットの場合、Oracle Databaseは、n
> 256に対してn
mod
256
に等しい2進数を戻します。マルチバイト・キャラクタ・セットの場合、n
は1つのコードポイント全体として解決される必要があります。無効なコード・ポイントは検証されず、無効なコード・ポイントを指定した場合の結果はそのコード・ポイントによって異なります。
このファンクションは、引数として、NUMBER
値、または暗黙的にNUMBER
型に変換可能な任意の値を取り、文字を戻します。
注意: (オプションのUSING NCHAR_CS 句の有無にかかわらず)CHR ファンクションを使用すると、ASCIIおよびEBCDICベースのマシン・アーキテクチャ間で移植不可能なコードが戻されます。 |
例
次の例は、データベース・キャラクタ・セットがWE8ISO8859P1と定義されているASCIIベースのマシンで実行されています。
SELECT CHR(67)||CHR(65)||CHR(84) "Dog" FROM DUAL; Dog --- CAT
キャラクタ・セットがWE8EBCDIC1047のEBCDICベースのマシンでも同じ結果を戻すには、前述の例を次のように修正する必要があります。
SELECT CHR(195)||CHR(193)||CHR(227) "Dog" FROM DUAL; Dog --- CAT
マルチバイト・キャラクタ・セットの場合、このように連結しても異なる結果となります。たとえば、a1a2
(a1
は1つ目のバイト、a2
は2つ目のバイト)という16進数の値を持つマルチバイト文字の場合、n
に対して「a1a2
」に等しい10進数、つまり41378を指定する必要があります。
SELECT CHR(41378) FROM DUAL;
次の例のように、a1に等しい10進数とa2に等しい10進数を連結させて指定することはできません。
SELECT CHR(161)||CHR(162) FROM DUAL;
ただし、次の例のように、マルチバイト文字を連結するマルチバイトのコードポイント全体を連結することは可能です。この例では、a1a2
とa1a3
の16進数を持つマルチバイト文字を連結しています。
SELECT CHR(41378)||CHR(41379) FROM DUAL;
次の例では、各国語キャラクタ・セットがUTF16であると仮定します。
SELECT CHR (196 USING NCHAR_CS) FROM DUAL; CH -- Ä