NVARCHAR2とは
NVARCHAR2とは、各国の国語文字を格納できるデータ型のことです。
「国語文字?なんじゃそれ??」と感じる方もいるかも知れませんが、国語文字とは日本なら日本語、中国なら中国語のように国固有の文字のことを指します。
そのため、NVARCHAR2(5)とすることで、「あいうえお」が格納できるようになります。
あ→00100110000100010
英語圏の人たちはアルファベットと数字や記号に対して日本は漢字、平仮名、カタカナ、数字、記号などがある。
日本語は2〜3バイトで1文字を表しており、英語圏は1バイトで1文字を表している。
このように文字コードは言語によって形態が違う。
なので文字コードの設定は大事!
これがVARCHAR2(5)だと文字コードの設定にもよりますが、日本語だと一文字あたり2〜3Byteあたり使用されるので2文字から3文字までしか格納することができません。
Byteでデータを管理するよりも日本語としてデータを扱いたい場合はNVARCHAR2がおすすめですね。
VARCHAR2をNVARCHAR2に変換するためには
型が違うと同じ文字列でも異なる値としてデータが扱われるので、同一の値として扱いたい時は型変換をしましょう。
OracleではVARCHAR2型やCHAR型をNVARCHAR2型やNCHAR型に変換するときには「TO_NCHAR」を使用します。
TO_NCHAR(変換したい値)
変換したい値には数値も入れることが可能らしいです。
具体的な使い方
システム改修にあたり新規テーブルにNVARCHAR2を指定したカラムを用意し、既存テーブルでVARCHAR2が設定されているカラムをインサートしたい場面があったとします。
その新規テーブルに既存テーブルのデータを格納するときには型変換をしてデータを格納します。
CREATE TABLE newTable
(id NUMBER(2,0) NOT NULL AUTO_INCREMENT,
name NVARCHAR2(15));
INSERT INTO newTable(id,name)
SELECT id,TO_NCHAR(name)
FROM oldTable;