• ベストアンサー

OracleとAccessの出力順の違い

AccessからOracleにデータをインポートし、同じ内容のクエリーでデータの抽出を行いましたが、 出力結果の出力順が一致しません。 CD 名称 --------- 11 アアア 12 いいい 13 ううう 14 エエエ 上のような表(表名:得意先)から SELECT CD, 名称 FROM 得意先 ORDER BY 名称; というクエリーでデータ抽出を行うと、 Accessの場合は上の表通りの出力順で結果が表示されますが、 Oracleの場合、 CD 名称 --------- 12 いいい 13 ううう 11 アアア 14 エエエ というように、出力順がひらがな優先で抽出されてしまいます。 Oracle Database 10g Enterprise Edition Release 10.1.0.2.0と Access2000を使用しています。 Oracleの設定等で回避できるものなのでしょうか? または抽出クエリーを変更すれば同じ結果が得られるものなのでしょうか? (出来ればクエリーの変更はしたくありません) どなたかお分かりの方、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • GoF
  • ベストアンサー率37% (34/91)
回答No.3

マニュアルを見ると、できるかもしれないですね。 SQLのNLSSORT関数で、NLS_SORT初期パラメータを エミュレートできますので ORDER BY NLSSORT(col, 'Japanese_Japan.JA16SJISTILDE') で やってみてください。

teacuptea
質問者

お礼

実際に試してみたいと思います。 ありがとうございます。

その他の回答 (3)

回答No.4

>#3 オラクルのソートは、マルチバイト圏の言語については、バイナリソートのみ 対応しているはずです。 SJIS,EUC,UTF8いずれのキャラクタセットも、”あアいイ・・”の順で バイナリが並ぶものはないので、標準機能で対応することは出来ないモノ と思います。 NLSをカスタマイズして、バイナリ順が”あアいイ・・”の順で並ぶよう キャラクタセットと作れば、NLSSORT関数なり、CONVERT関数なりで、 ソートキーを作れると思います。 なので、ACCESSの照合順をマネをするには、大変な労力が必要になると 思われます。

teacuptea
質問者

お礼

結構大変な作業っぽいですね。 ソート順が異なる原因については理解できました。 ありがとうございました。

  • GoF
  • ベストアンサー率37% (34/91)
回答No.2

Accessはよく知らないのですが AccessはSJISをバイナリソート Oracleは EUCでバイナリソートの設定(デフォルト)のように思えます。 Oracleは、EUC でDBを構築されてませんか?(unix系かな?) Oracleには、NLS_SORTパラメータでソートを制御できますが NLSでの設定では質問のとおりの並び替えは、恐らく不可能だと思います。 自分が思い浮かんだのは 1. DBをSJISで作りなおす。 2. ORDER BY に CONVERTを入れてSJISでソートする。 くらいです。 自サーバが壊れてしまったので、動作確認はできないので 動作保証できませんので、あしからず。

  • takasebou
  • ベストアンサー率42% (61/144)
回答No.1

AccessとOracleの文字の判定方法の違いだと思います。 Oracleでは文字コード順で判断していますが、Accessではカナ順をみているのでしょう。 これはDBの仕様ですので、変更は出来ないと思います。 名称でなくてCDの方をソートキーにする訳にはいかないのでしょうか? 無理だとすれば、別途にフィールドを追加してソート順の基準となるものをいれるしかないと思います(全部カタカナの名称カナフィールドを作るとか)。

teacuptea
質問者

お礼

AccessとOracleの違いということですか。 ありがとうございました。

関連するQ&A