2012-09-19 1 views

答えて

17

これは機能しますか?

SELECT ....... ORDER BY COALESCE(col1,col2,col3,etc) IS NULL 

「すべてのNULL列が最後に」という言葉に混乱します。あなたが特定の列の最後のすべてのNULL値が必要な場合は、これを使用する:

SELECT ....... ORDER BY col1 IS NULL 
+0

あなたは 'NULL'れていません意味しないのですか? – dan04

+0

@ dan04 thx、you're right – mvds

+3

私はそれが最後にヌルを得るためには 'IS NULL'であるべきだと思う: – Blorgbeard

4

あなたが偽のそれにこのような何かを行うことができます。

select * from test 
order by case ordercol when null then 1 else 0 end, ordercol 
+0

なぜordercolがnullの場合は順序付けしない、それ以外は0 else1、ordercol'ですか?誰かがordercolに-100より小さい値を設定すると変なバグが保存されます。 – mvds

+0

それは良い点です。私はちょうど私の頭の上から曖昧な例を書きました。データがどのように見えるか分からないからです。しかし、あなたの訂正は一般的にうまくいく - それを適用! – Blorgbeard

15

IややBlorgbeardの答えのように、この変形は、」doesnの間正しいデータ型の有効な「偽の」値を提供することに注意してください。

ORDER BY CASE WHEN SOMECOL IS NULL THEN 1 ELSE 0 END, SOMECOL 

また、偽の値を使用したい場合でも、ISNULLを使用することをお勧めします。

ORDER BY ISNULL(SOMECOL,-9999) 

マイケルが指摘したように、SQLiteはIFNULLを使用します。 ANSI-SQL UniversalバージョンCOALESCEも使用できます。

+0

マイナーな訂正だと思います... SQLiteでは、ISNULLはIFNULLでなければなりません。 – Michael

+0

ありがとう@Michael、より良い情報で更新 – RichardTheKiwi

2

同じ問題が発生しました。 私はこの仕事ができる判明:

(私はSQLiteのための任意のisnull機能を見つけることができませんでした)

order by ifnull(column_what_you_want_to_sort,'value in case of null') 
関連する問題