2012-09-19 6 views

답변

17

이 방법을 사용할 수 있습니까?

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

"모든 NULL 열 마지막"으로 혼란스러워합니다. 특정 열에서 마지막으로 모든 NULL 값을 원하는 경우,이를 사용

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

(I SQLite는 대한 isnull 기능을 찾을 수 없습니다)? – dan04

+0

@ dan04 thx, 네가 맞다 – 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이 아닌 다른 경우 1 ordercol? 누군가가 -100보다 작은 값을 ordercol에 넣을 때 이상한 버그를 저장합니다. – mvds

+0

좋은 지적입니다. 우리는 데이터가 어떻게 생겼는지 모르기 때문에 머리 꼭대기에서 모호한 예를 썼습니다. 그러나 당신의 교정은 일반적으로 잘 작동합니다. – Blorgbeard

15

나는 다소 Blorgbeard의 대답처럼,이 변형은 '아무튼 동안 올바른 데이터 유형의 유효한 '가짜'값을 제공하는 데 신경을 써야합니다.

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

또는 가짜 값을 사용하려는 경우에도 ISNULL을 선호합니다!

ORDER BY ISNULL(SOMECOL,-9999) 

마이클이 언급 한 것처럼 SQLite는 IFNULL을 사용합니다. ANSI-SQL 범용 버전 COALESCE도 사용할 수 있습니다.

+0

사소한 수정 제 생각에는 ... SQLite에서는 ISNULL이 IFNULL이어야합니다. – Michael

+0

감사합니다. @Michael, 개선 된 정보로 업데이트 됨 – RichardTheKiwi

2

같은 문제가 발생했습니다. 나는이 작업을 할 수 발견 :

당신이`를 NULL`되지 않는 것을 의미하지 않는다

order by ifnull(column_what_you_want_to_sort,'value in case of null') 
관련 문제