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のテーブル名を、小文字にしてください。
以上