SQL 関数一覧 (A‐D) > ASCIISTR、UNISTR

文字列を UTF-16BE 表記に変換、UCS-2 アスキー表記を文字列に変換

syntax

ASCIISTR ( string )
return [ ascii string ]

parameter

string文字列式

return

  • マルチバイト文字を含む文字列を UTF-16 表記のアスキーコードのみで表現する。

avail

  • SQL および PL/SQL の両方で使用可能。

syntax

UNISTR ( encode_string )
return [ NVARCHAR2 ]

parameter

encode_stringUCS-2 のバイトコードをアスキーコードで記した文字列式

return

  • UCS-2 表記のアスキー文字列を各国語文字列に変換する。

avail

  • SQL および PL/SQL の両方で使用可能。

ASCIISTR 関数の内容

文字列をアスキーコードだけを使用した形式に変換する。
文字列 string を アスキーコード(US7ASII)領域はそのまま通過、それ以外は UTF-16(BE) エンコード表現にした後 '\' マークでエスケースした \xxxx 形式の 16 進数のアスキーコード文字列に変換する。
UTF-16(BE) による表記は UNISTR 関数で元のマルチバイトの文字列に復号することができる。(※)

UNISTR 関数の内容

エスケープ処理された UCS-2 形式(※) のアスキー文字列を各国語キャラクタセットの文字列に変換する。
文字列 encode_string のアスキーコード(US7ASII)領域はそのまま通過し、エスケープ処理された \xxxx 形式の文字列を1文字に変換する。

例えば、US7ASCII で構築されたデータベースでも日本語データを格納することができる。日本語環境の入力も表示フォントすら無いような英語 OS や コンソール上から、どうしても日本語を入力したい場合にアスキー入力によって日本語を取り扱うことも(頑張れば)できる。

注意

(※) UNISTR の受け入れる文字は UCS-2 エンコード、ASCIISTR の出力するエンコードは UTF-16(BE) と一致していない。
サポートする文字領域は互換性があり UTF-16 > UCS-2 なので大抵は問題ないと思われる。マニュアルで UTF-16 と書かずに UCS-2 と書いているところをみると一部の文字は逆変換できませんということなのかもしれない。(未確認)

ASCIISTR 使用例

SQL> select str, asciistr(str) utf16_enc from unistr_sample;
 
STR              UTF16_ENC
---------------- ------------------------------
here we go       here we go
yes レッツら go  yes \30EC\30C3\30C4\3089 go
here we are      here we are

全角カタカナ 'レ' の UTF16(BE) コード x'30ec'

SQL> select dump(n'レ', 1016) from dual;
 
DUMP(N'レ',1016)
---------------------------------------------
Typ=96 Len=2 CharacterSet=AL16UTF16: 30,ec

UNISTR 使用例

ASCIISTR の結果文字列を逆変換する

SQL> select str, asciistr(str) utf16_enc,
  2              unistr(asciistr(str)) ucs2_dec
  3   from unistr_sample;
 
STR              UTF16_ENC                      UCS2_DEC
---------------- ------------------------------ ------------------------------
here we go       here we go                     here we go
yes レッツら go  yes \30EC\30C3\30C4\3089 go    yes レッツら go
here we are      here we are                    here we are


文字コードの種類

SQL 関数 - ASCII_STR,UNISTR 関連

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ 会員制(無料)の公式技術サイト