文字を文字コードに、コードを文字に、文字コードを NCHAR に変換
ASCII ( string )
return [ NUMBER ]
- 文字列の「最初」の1文字目の文字コード番号(コードポイント)
CHR ( code_point )
CHR ( code_point USING NCHAR_CS )
NCHR ( code_point )
return [ VARCHAR2 | NVARCHAR2 ]
code_point | 単一文字に変換可能な文字コード番号 10進数 | |
- コード番号 code_point と同じバイナリコードをもつ文字
ASCII 関数の内容
文字列 string の1文字目の「データベースキャラクタセット」における文字コード(文字コードポイント)を戻す。
プラットホームが EBCDIC 環境 (UTFE) の場合には EBCDIC コードを戻す。
CHR 関数の内容
文字コード code_point に該当するデータベースキャラクタセットの文字を戻す。
USING NCHAR_CS オプションを使用することで各国語キャラクタセット上で一致する文字を取得する。
つまり、同じ コードポイント code_point を指定しても「データベースキャラクタセット」と「各国語キャラクタセット」で異なる文字にマッピングする。
マニュアルに書かれていないが USING NCHAR_CS の代わりに USING CHAR_CS と記述するとデータベースキャラクタセットの文字となるが他の任意のキャラクタセットではエラーになる。
NCHR 関数の内容
CHR ( code_point USING NCHAR_CS ) と同じ。
指定したコードポイントに該当する各国語キャラクタセット上の文字を VARCHAR2 で戻す。
CHR 使用例
CHR は文中に表現できない文字をあらわすのに使用することが多い。⇒ エスケープシーケンス
CHR(13) || CHR(10) = キャリッジリターン(CR)、ラインフィード(LF) = 改行コード(※) / CHR(39) = (')単一引用符
(※) アスキーコードベースの Windows 系での改行コードは CHR(13) + CHR(10) であるが UNIX 系では CHR(10) のみ
さらに EBCDIC ベースの場合には LF が CHR(21) または CHR(37) に定義されいている。
単一引用符を表現する場合
It's a ''pen'' を あらわすのに
(1) 'It'''s a ''''pen'''''
(2) 'It' || CHR(39) || 's a '|| CHR(39) || CHR(39)|| 'pen'|| CHR(39) || CHR(39)
(1) の場合、単一引用符(')を 1 つ間違えるとエラーになる。
ケースによっては CHR(39) の方が便利かもしれない。
Oracle 10g の リテラル表記 を使えばスマートに記述できる。引用符文字定義 を使用する。
引用符デリミタを 番号記号('#') で定義した例
q'#It's a ''pen''#'
引用符デリミタを括弧に({ [ < () 再定義する場合には対となる閉じ括弧を使用する。
q'{It's a ''pen''}' q'<It's a ''pen''>'
q'[It's a ''pen'']' q'(It's a ''pen'')'
文字コードの種類
SQL 関数 - ASCII,CHR,NCHR 関連