アプリ版:「スタンプのみでお礼する」機能のリリースについて

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の設定等で回避できるものなのでしょうか?
または抽出クエリーを変更すれば同じ結果が得られるものなのでしょうか?
(出来ればクエリーの変更はしたくありません)

どなたかお分かりの方、よろしくお願いします。

A 回答 (4件)

マニュアルを見ると、できるかもしれないですね。



SQLのNLSSORT関数で、NLS_SORT初期パラメータを
エミュレートできますので
ORDER BY NLSSORT(col, 'Japanese_Japan.JA16SJISTILDE') で やってみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/01 15:57

>#3



オラクルのソートは、マルチバイト圏の言語については、バイナリソートのみ
対応しているはずです。
SJIS,EUC,UTF8いずれのキャラクタセットも、”あアいイ・・”の順で
バイナリが並ぶものはないので、標準機能で対応することは出来ないモノ
と思います。

NLSをカスタマイズして、バイナリ順が”あアいイ・・”の順で並ぶよう
キャラクタセットと作れば、NLSSORT関数なり、CONVERT関数なりで、
ソートキーを作れると思います。

なので、ACCESSの照合順をマネをするには、大変な労力が必要になると
思われます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/02 15:46

Accessはよく知らないのですが


AccessはSJISをバイナリソート

Oracleは EUCでバイナリソートの設定(デフォルト)のように思えます。
Oracleは、EUC でDBを構築されてませんか?(unix系かな?)

Oracleには、NLS_SORTパラメータでソートを制御できますが
NLSでの設定では質問のとおりの並び替えは、恐らく不可能だと思います。

自分が思い浮かんだのは

1. DBをSJISで作りなおす。
2. ORDER BY に CONVERTを入れてSJISでソートする。

くらいです。
自サーバが壊れてしまったので、動作確認はできないので
動作保証できませんので、あしからず。
    • good
    • 0

AccessとOracleの文字の判定方法の違いだと思います。



Oracleでは文字コード順で判断していますが、Accessではカナ順をみているのでしょう。

これはDBの仕様ですので、変更は出来ないと思います。

名称でなくてCDの方をソートキーにする訳にはいかないのでしょうか?

無理だとすれば、別途にフィールドを追加してソート順の基準となるものをいれるしかないと思います(全部カタカナの名称カナフィールドを作るとか)。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/01 14:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す