@DBFlute-0.7.x, Java, C#
「PostgreSQL: NULLS FIRST/LAST」
http://d.hatena.ne.jp/jflute/20080225/1203868539
の続き:
DBFluteのConditionBeanでも対応しました。
MemberCB cb = new MemberCB();
cb.query().addOrderBy_Birthdate_Asc().withNullsFirst();
【Oracle/PostgreSQL/H2】
order by BIRTHDATE asc nulls first
【SQLServer/MySQL/Derby/DB2】
order by case when BIRTHDATE is not null
then 1 else 0 end, BIRTHDATE asc
NullsFirst --> Nullが先に並ぶ
NullsLast --> Nullが後に並ぶ
※DB2はこれから検証します...(サポートされているのか否か)
追記(5/5):DB2の後者の方法で実現しました。
最初はnulls first構文をサポートしているDBに限定しようかと
思いましたが、やはり極力同じインターフェースにしたいので
サポートしました。後者は明らかに「遅そう」ですが、
20件や30件程度のリストであれば特に問題ないかと思います。
Where句で絞らずに10000件とかでOrderByしてしまう
ページング検索だとつらいかも。
早く全DBにサポートしてもらいたいものです。
後者のやり方は、こちらの方の記事を参考にさせて頂きました。
(ありがとうございます)
http://blog.kimuradb.com/?eid=633585