2012-09-19 13 views

Respuesta

17

¿podría esto funcionar?

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

Estoy algo confundido por su fraseología "todas las columnas NULL al final". Si desea que todos los valores NULL últimos en una columna en particular, utilice esto:

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

No quiere decir 'NO SE null'? – dan04

+0

@ dan04 thx, tienes razón – mvds

+3

Creo que debería ser 'IS NULL' para obtener los nulos la última :) – Blorgbeard

4

se puede hacer algo como esto para fingir:

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

¿por qué no 'ordenar por caso cuando ordercol es nulo y luego 0 else 1, ordercol'? guarda un error extraño cuando alguien pone valores por debajo de -100 en ordercol. – mvds

+0

Ese es un buen punto. Acabo de escribir un vago ejemplo sobre la cabeza porque no sabemos cómo son los datos. Pero su corrección funciona mejor en general, ¡se aplicó! – Blorgbeard

15

Aunque algo así como la respuesta de Blorgbeard, esta variante doesn' No importa si se proporciona un valor "falso" válido del tipo de datos correcto.

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

Alternativamente, incluso si quisiera utilizar un valor falso, ¡preferiría ISNULL!

ORDER BY ISNULL(SOMECOL,-9999) 

Como señaló Michael, SQLite usa IFNULL. También puede usar la versión universal ANSI-SQL COALESCE.

+0

Corrección secundaria, creo ... en SQLite, ISNULL debe ser IFNULL. – Michael

+0

Gracias @Michael, actualizado con mejor información – RichardTheKiwi

2

Me encontré con el mismo problema. me enteré que esto podría funcionar:

(no he encontrado ninguna función isnull para SQLite)

order by ifnull(column_what_you_want_to_sort,'value in case of null') 
Cuestiones relacionadas