TO:DRS関係者各位
FROM:油井コンサルティング 岡本
DATE:12/12/2002
RE:D00018 「SQLServer7.0」の「並べ替え順」は、「bin_cp932 バイナリ順」にしてください

下記メモは、4/16/2001に掲示板「DRS関係者<->YC情報交換(文書)」にてお知らせしたメモです。
重要な内容なので、掲示板「DRSFAQ」に転載しました。

**************************************

TO:     DRS関係各位
FROM:   ゆい
DATE:   4/16/2001
RE:     DRSのDBとしてマイクロソフトSQLサーバー(MSSQL)を使うときに、濁音や半濁音を区別できない不具合が発生することがありmす。

<不具合例>

投薬の大マスタを表示する際に「びたみ」と入力して表示させると、「ビタミン・・・・」と言ったものが検索されます。
「びた」で検索しても、「ビタミン・・・・」は表示されます。
しかし「び」と入力して検索すると「ビタミン・・・・」は検索されません。
これは元々検索されないのでしょうか?
それとも何かしらの設定があるのでしょうか?

<原因>

この現象は、「SQLServer7.0」の「並べ替え順」を「nls_cp932 辞書順、大文字小文字を区別しない (Windows NT  が提供)」にすると発生します。(以後この並び順を「nls_cp932順」とよびます。)

「nls_cp932順」にすると 「ひ」「び」(濁音)「ぴ」(半濁音)は、並び順上同じ文字として扱われます。そのため、薬剤マスターのよみ順は、下記例のように並びます。


ひあ
びあ
ぴあ
ひい
びい

上記並び順で、検索文字に「び」を指定すると、並び順内に「び」で無い文字が混ざります。

「dbman32.exe」での「SQLServer7.0」からの読込みでは、検索文字に「び」指定されている場合、よみに「び」以外の文字が現れたら、そこで検索を打ち切ります。上記例の並び順では、「ぴあ」で検索を打ち切ってしまう為、「びい」が検索されなくなります。

並び順は、「SQL Server クエリ アナライザ」で「sp_helpsort」コマンドを実行すると確認できます。


<対処方法>

「並べ替え順」を「bin_cp932 バイナリ順」にします。

「並べ替え順」の変更は、「SQLServer Books Online」の下記に記載されてます。具体的操作手順は、下記を参照ください。

「文字セット、並べ替え順、または Unicode 照合順序を変更する」

***注意点***
「並べ替え順」を「bin_cp932」にするとテーブル名の大文字、小文字を区別します。DRSでは、テーブル名を小文字で扱っているので、再作成するMSSQL中のDRSのテーブル名を、小文字にしてください。

以上