- PR -

OracleとSqlServerのNULL値のOrderByの違い

1
投稿者投稿内容
よねちん
ベテラン
会議室デビュー日: 2002/09/18
投稿数: 55
投稿日時: 2003-03-15 11:35
ファイル:M1
CODE KBN
---------------
AAAA null値
AAAA T

このようなデータがある場合
SELECT CODE,KBN FROM M1 ORDER BY KBN
のSQLを発行するとOracle8とSqlServer2000の
結果が異なります。

<Oracle>
CODE KBN
---------------
AAAA T
AAAA null値

<SQLSERVER>
CODE KBN
---------------
AAAA null値
AAAA T

現在Oracle->SqlServerに移行作業をしている
のですが、このような状態になってしまい困って
ます。できればOracleの仕様に合わせるように
したいのですが、どのように対処したら良いか
教えてください。
できればSQL文の変更なしで対応したいのですが
無理なのでしょうか?
よねちん
ベテラン
会議室デビュー日: 2002/09/18
投稿数: 55
投稿日時: 2003-03-15 14:45
自己レスです。

Order By句にISNULL関数を使えばなんとかできそうなのですが
SELECT CODE,KBN FROM M1 ORDER BY ISNULL(KBN,'ZZZZ')

ただ第2パラメータに大きな値を挿入しなければならず
どんな値をセットしていけば良いのか分かりません。
あとSQL文をこの形式に全て当てはめていかないとなると
かなりの修正が発生してしまうのでSQL文の修正以外で
なんとかならないでしょうか?


よねちん
ベテラン
会議室デビュー日: 2002/09/18
投稿数: 55
投稿日時: 2003-03-17 18:59
自己レスです。

やはり、そもそもnull項目において昇順にしたいなどの仕様が
変なのでしょうか?そうでもなければとっくにいろいろな事例
があってもよさそうですもんね。

旧システムの名残なんです(−−#
相変わらず困ってます。
Tog
ベテラン
会議室デビュー日: 2002/06/09
投稿数: 76
投稿日時: 2003-03-17 19:30
こんにちわ。返答でなくて申し訳ないのですが。。

なにか方法があるのか気になってながめていたのですがレス付かないですね。

そこでSQL関係のMLに投げてみてはいかがでしょうか?
なにか方法がありそうななさそうな・・

http://www.sqlpassj.org/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-04-07 10:47
解決しているでしょうか。

 Oracleで、order by 句に nulls firstを付ければnullが最初に、nulls lastで最後にソートされます。
Oracle9i
よねだ
常連さん
会議室デビュー日: 2002/10/13
投稿数: 22
投稿日時: 2003-04-07 21:04
 米田です。

>そこでSQL関係のMLに投げてみてはいかがでしょうか?
>http://www.sqlpassj.org/
まさに、PASSJ のシステム構築ML で話題になっています。
[pml-dev,00378] NULLの並び替え順序
以下です。
http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=2&disp_mode=0&ispre=0&mid=15362
から閲覧できると思います。
 順番制御用に1桁足すようなイメージの方法を書きました。
1

スキルアップ/キャリアアップ(JOB@IT)