Access での五十音順

*ここらへん、いつもAmazonへのリンク置いてるんですけど、これに関してはぴったりくる書籍情報が無い!!ので、データベースの神によるブログの URL を置いておきます。
照合順序 – 文字の比較と並び順 (その 1)
照合順序 – 文字の比較と並び順 (その 2)
日本語照合順序での 濁音、半濁音 の取り扱いについて
日本語照合順序での長音、繰り返し符号の取り扱いについて
* この資料は図書検索業務で通常意識されている「清音検索」にはあてはまりません。
汎用機、オフコン類からダウンサイジングを計ろうとした場合、汎用機系のマシンとの並び順が変わってしまう現象についての説明になっています。歴史感じるわー。
Access で顧客管理ソフトを作ったぜ。ソートがラクだから、顧客コード順だろうがあいうえお順だろうが自由自在さ。
ふりがなの項目を作って、ただOrder Byって書けばいいんだからやめらんないね。
…ちょっと待ってください。本当に、思ったとおりに並んでいますか?
Access の Help にはこういう記述があります。(トピックの検索で 並べ替え-規則 で検索)
ひらがなやカタカナは、五十音順に並べ替えられます。
英字はアルファベット順に並べ替えられます。大文字と小文字は同じものとして扱われます。
数字は数の小さい順に並べ替えられます。
英数字、記号の半角と全角は、同じものとして扱われます。
それ以外の漢字、記号、ギリシャ文字、ロシア文字などは、シフト JIS コード順に並べ替えられます。
また、五十音順による並べ替えは、次の規則に従います。
長音 (ー) は、前の音節の母音と見なされます。たとえば、”データベース” は、”デエタベエス” として扱われます。
“々” は、前の文字と同じに文字と見なされます。たとえば、”佐々木” は、”佐佐木” として扱われます。
清音や濁音は、清音、濁音、半濁音の順序で並べ替えられます。
ひらがな、全角カタカナ、半角カタカナは、すべて同じものとして扱われます。
(Access97 Help より抜粋)
さらに、サポート技術情報にはこんな資料も。
まーそうゆう仕様ですからしょーがないですけど、「データベース」と「デエタベエス」、「佐々木」と「佐佐木」は区別して並べ替えて欲しいです。同じじゃないんですから。(-_-#)←汎用機あがりの意見
逆に、この仕様でなければ困るという業務もあります。図書のデータベース業界(と呼ぶのが適当かどうかは不明)では、ずーっと昔から「清音検索」といった意味合いの検索方法がとられていて、「ハハ」とキーワードを入力し検索した場合、「ババ」も「パパ」も「ハハ」も全部検索されなければダメ、という仕様です。
もちろん並び順についても同様です。広辞苑での「50音順」の定義も、このとおりそれで正しい、と記述されています。
(なぼは実際にその業務に携わったことがないので今まで知りませんでした^_^;;勉強不足・・ ご助言を頂いたrikiya’s様、ありがとうございます)
でも、こういう人も多いでしょう。「汎用機・オフコンから Access に乗せかえることになったんだから、今までと同じ並び順でなくっちゃ客は納得しないよぉ!!!」
「新規データベースの並び順」を「欧米標準」に設定して作成した mdb では、きっちりとコード順に並べてくれます。このコードが Unicode なのかなんなのかはちょっと定かではないんですが、明らかに並び順が違っています。ただヘルプなどにはそうゆう記述がぜんぜんないですし、Micr○soft のサイトにもぜんぜん載ってないのでちょっと不安なのですが、こういうオプションがあるんだから別にこう使ったってかまわないぜ!というチャレンジャーな方はやってみてはどうでしょう?(^_^;)
ただーし、残念ながら、Access 2000 からは「欧米標準」がなくなってしまいましたー。かわりに「全般」てのがあるんですが、これが「欧米標準」と同じ動作になるのかどうか確認がとれてません。誰かためしにやってみてください。(他力本願)
あ、ちなみに、英字と数字が混在した項目で昇順に並び替えると数字が上に来ますけど、これを英字が上に来るようにはできません。たしか、なぼが使ってたオフコンは数字のほうが大きかったんだよね。(^_^;)
Oracleでは、NLS_SORTパラメータでバイナリソートや各国語による言語ソートなど、ソート規則の切り替えをすることもできます。
(SQL Server にも「照合順序」という考え方があり、切り替えもできるらしいです)
Oracleリンクテーブルを Access 上で開いてフィルタでソートしたとすると、Oracleでの指定どおり並ぶようです。同じテーブルをインポートしてソートした時と結果が違っていますから。(^_^;;;)(注:Access97 で確認)
これも困る人多いんじゃないかな~?(^_^;;)
欲を言えば、 Access にもどっちか選べるような機能があればいいんですけどねー。
…ま、Oracle と比べちゃいけないですね…