• 締切済み

Oracleのnchar型について

お世話になります。教えてください。 Oracle9iのnchar型について詳しく知りたいのですが。 char型の場合、データベースの作成時の文字コードで文字が格納 されますが、nchar型の場合、unicodeで格納されるという 認識でいます。 例えば、SJISには存在しない文字は、char型の列に登録すると、 文字化けするので、 nchar型の列に登録しようと思うのですが、nchar型の列の値を SQLPlusやosqledit,objectbrowserで表示しても '?' と 表示されます。 正しく nchar型の列の値を表示する にはどうすればいいのでしょうか? 例えば、VB.netなどのプログラムから取得した場合には、正しく 文字化けせずに取得できるという認識でいいのでしょうか?  よろしくお願いします。

みんなの回答

回答No.1

データベースに格納される情報は、データベースキャラクタセットで決まります。(つまりunicodeとは限らない) クライアント側でデータと取り出した場合は、クライアント側のNLSに合わせたコード変換がされて、 クライアントの文字セットで取り出せます。 登録もクライアントの文字セットで登録/更新した文字列は、データベースのキャラクタセットに変換し格納します。 NLSで変換不能な文字については、?に置き換わると思いますが・・ どのようにして登録されたのか判りませんが、データが正しく登録されていて、正しく設定されたクライアントなら SQLPLUSでも、それなりに表示されるはずですよ。(OSが表現できない文字とかは、部分的に?になるけど)

JINJapan
質問者

補足

回答ありがとうございます。 重ねて質問させてもらいますが、nchar型に関しても回答いただいた内容だと考えて間違いないのでしょうか?じゃあ何のために、char型と nchar型が存在するのかを知りたいです。

関連するQ&A