今天在項目中發現一個bug,就是關於欄位排序的
本來是想得到這樣的結果:
但結果卻是這樣的,把A1風機放到了最後一條:
斷定不是外掛程式的問題,肯定是sql問題,由於原項目是SQLServer的,後來遷移到Oracle,所以出現這個問題。
原SQLServer 的sql是這樣的,也是沒有問題的:
但是在Oracle中卻是這樣:
在Oracle中,將tc.dataValue後面的desc刪除就可以了達到預期效果了,原來
【sqlserver】:sqlserver 認為 null 最小。升序排列:null 值預設排在最前。要想排後面,則:order by case when col is null then 1 else 0 end ,col降序排列:null 值預設排在最後。要想排在前面,則:order by case when col is null then 0 else 1 end , col desc【oracle】:oracle認為 null 最大。升序排列,預設情況下,null值排後面。降序排序,預設情況下,null值排前面。 有幾種辦法改變這種情況:(1)用 nvl 函數或decode 函數 將null轉換為一特定值(2)用case文法將null轉換為一特定值(oracle9i以後版本支援。和sqlserver類似):order by (case mycol when null then ’北京漂客’ else mycol end) www.2cto.com (3)使用nulls first 或者nulls last 文法。這是oracle專門用來null值排序的文法。nulls first :將null排在最前面。如:select * from mytb order by mycol nulls firstnull last :將null排在最後面。如:select * from mytb order by mycol nulls last