• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:NULL値を含むソート)

NULL値を含むソート方法とMySQL4.0.20の日本語EUCの文字化けバグについて

このQ&Aのポイント
  • MySQL4.0.20を使用している場合、データをソートする際にNULL値が先に表示される問題が発生します。
  • NULL値を最後に表示して数値のソートを行いたい場合、2回に分けてソートする方法があります。
  • また、MySQL4.0.20では日本語EUCの文字化けバグが存在する可能性がありますが、4.1以降では修正されている可能性があります。

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

  • ベストアンサー
noname#12943
noname#12943
回答No.2

#1です。 確かに999~っていうのはスマートではないように見えるかもしれません。 しかし、コードの設計上、999~っていうのを使ったりもしています。 たとえば日付などの場合ですね。 そのレコードの適用される終了日が決定されていないときなどに99999999(年月日で8桁の文字列型)などとやって使ったりしています。 ですから、終了年月日が決まっていない場合、この999~をデフォルトの値としてinsertやupdateをしています。 実際にはこれを定数として定義してプログラム中では使用しています。 例) String LAST_DATE = "99999999"; 99999999999(intの11桁MAX値)ではだめなんでしょうか? これならば、これ以上の値となるとけたが12桁ないとダメですよね。 このカラムのデータが何かにもよるのかもしれませんが・・・。

その他の回答 (1)

noname#12943
noname#12943
回答No.1

NULLを調べる関数を使って、最後になる(たとえば9999みたいな)ようにするしかないのではないでしょうか? MySqlを使ったことがないので、具体的にはわかりませんが、↓ここのあたりの関数でいけませんか?

参考URL:
http://www.signal42.com/mirrors/mysql/doc/mysql/ja/Control_flow_functions.html#IDX1235
kounesi
質問者

補足

お答えありがとうございます。 ある程度解決しました。 select null_ga_aru_field, ifnull(null_ga_aru_field, 9999) from aru_table order by 2 asc; これでNULLを最後にして昇順ソートはできましたが、 9999は、この値を超えるもしくは同じ値が出てきそうだし、スマートではないので、MySQLのint(11)型の最大値をセットする関数はあるのでしょうか? よろしくお願いします。

関連するQ&A