TOPサーバ構築・運用> 事前実験1:「n」が付いていないデータ型でやってみる
Vista&データベース
Windows Vistaで発生するデータベーストラブル対応指南

第2回:Microsoft SQL Server 2005で必要な対処(前編)

著者:一志 達也   2007/7/18
前のページ  1  2  3  次のページ
事前実験1:「n」が付いていないデータ型でやってみる

   では実際にJIS X 0213:2004で追加された文字を含めて、データベースに文字列を格納してみよう。JIS X 0213:2004で追加された文字は、サロゲートペアで扱うものとそうでないものの2種類を用意する。これらをInsert文で格納したときにエラーにならず、それを取り出して問題なく元通りの文字列が表示されれば合格だ。

   varchar型の列を持つ表を下記のコマンドで作成する。
create table unicode_test(charcol varchar(10));

   JIS X 0213:2004で追加された文字列とそうでない文字列を表に挿入するために下記のSQLを実行する。


(画像をクリックすると別ウィンドウに拡大図を表示します)

   実行結果は特にエラーなしに格納できる。

1 rows inserted
1 rows inserted
1 rows inserted

   格納したデータを取り出すために下記SQLを実行する。

select * from unicode_test;

   その結果は下記のようなものであった。

charcol
----------
実験
?鄧
????

3 rows selected

   このように、先頭に「n」が付かないデータ型へ格納した文字がJIS X 0213:2004の場合、実際には正しく格納できていないために取り出すと元の文字が表示されない。


事前実験2:「n」が付いたデータ型でNプレフィックスをつけないで実行する

   では次に、「n」が付いたデータ型でNプレフィックスをつけないで実行してみよう。さきほどの実験は、失敗するとわかっていてやったようなものだ。Unicodeを扱えるのは、先頭に「n」がついたデータ型に限られるとわかった上でのことだからである。今度は「n」がついたデータ型で表を作り、同じように実験してみよう。

   nvarchar型の列を持つ表を下記SQLで作成する。

create table unicode_test(ncharcol nvarchar(10));

   JIS X 0213:2004で追加された文字列とそうでない文字列を表に挿入するために下記SQLを実行する。


(画像をクリックすると別ウィンドウに拡大図を表示します)

   その結果、特にエラーなしに格納できる。

1 rows inserted
1 rows inserted
1 rows inserted

   格納したデータを取り出すためにSQLを実行する。

select * from unicode_test;

   その結果、格納時にエラーは起きなくても、データを取り出すと正しく格納できていなかったことがわかる。

ncharcol
----------
実験
?鄧
????

3 rows selected

前のページ  1  2  3  次のページ


一志 達也
著者プロフィール
一志 達也
SI企業において、アプリケーション開発や、データベースを中心としたインフラを担当。開発者向け、初心者向けの講座を得意とする。著書に「やさしいOracle PL/SQL入門」「Oracle10g 真剣勝負」などがある。


INDEX
第2回:Microsoft SQL Server 2005で必要な対処(前編)
  Microsoft SQL Server 2005で必要な対処
事前実験1:「n」が付いていないデータ型でやってみる
  実験1:Nプレフィックスもつけてやってみる