當前位置:首頁 » 編程語言 » sql語句排序為空在前
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql語句排序為空在前

發布時間: 2022-12-09 23:01:59

❶ PL sql 查詢結果為空的怎麼排序到最後面

1、只有一個查詢結果的查詢:
select min(to_char(b.arrive_date,'yyyymmdd')||lpad(b.arrive_time,6,0)||c.xs_mc)
into vtmpstr
from tb_evt_bag_mail_rela a, tb_evt_route_bag_rela b, tb_jgjm c
where a.mail_num = vmail_num

。。。。。。
對這個查詢,只需判斷變數vtmpstr是否為空就可以了,即:
if vtmpstr is null then
注意:查詢中用聚合函數才可以這樣用,如果直接取一個值,又沒有結果,則會出錯跳出模塊,跑到例外處理那兒去了,如下面語句:
select city_name into vcity_jdj
from tb_county
where xs_code=substr(vrcv_area,1,4);
如果沒有查詢結果,或者多個查詢結果,都會出錯跑到例外處理那兒,所以應該寫成下面格式:
select min(city_name) into vcity_jdj
from tb_county
where xs_code=substr(vrcv_area,1,4);

2、游標的查詢結果:
open cur_get_trans(vin_date,vmail_num);
loop
fetch cur_get_trans
into vdeal_date,vdeal_time,vdeal_org_code,vlabel_strip,
vmway_code,vflight_name,vdepart_date,vdepart_time;
--判斷查詢結果
if cur_get_trans%found then

。。。
else
。。。
end if;
或者退出循環處理,即:
open cur_get_trans(vin_date,vmail_num);
loop
fetch cur_get_trans
into vdeal_date,vdeal_time,vdeal_org_code,vlabel_strip,
vmway_code,vflight_name,vdepart_date,vdepart_time;
exit when cur_get_mail%notfound;

--處理有結果的查詢
end loop;
--處理無結果的查詢
--注意,有查詢結果處理完畢也會執行到此處,所以要區分上面是否進行過有結果的處理。
close cur_get_trans;
===================================================================
附:
1、游標相關的4個語句:
declare(聲明)、open(打開)、fetch(取數)、close(關閉)。
2、游標相關的4個屬性:%isopen, %found, %notfound,和 %rowcount
(1)%isopen:布爾型,用於檢測游標是否已經打開。如果游標已經打開,返回true,否則返回false。
(2)%found:布爾型,判斷最近一次執行fetch語句後,是否從緩沖區中提取到數據,返回true,否則返回false。
(3)%notfound:與%found相反。
(4)%rowcount:數值型,返回到目前為止已經從游標緩沖區提取數據的行數。在fetch語句沒有執行之前,該屬性值為0。
使用隱式游標%found屬性,sql%found;
使用顯示游標%found屬性,cur_get_trans%found。

❷ mysql !!!按照某個欄位排序 該欄位為空排到最後邊

挖墳,答案寫法沒有語法、語義的問題,但是寫的不夠精簡,不是正常的order寫法。

指出兩點問題:1)ifnull指成'',再與''比較,可直接寫成 sortnum is null;

2)可以直接用結果為bool表達式進行排序(asc),false(0)在前,true在後。
SQL為:
select *
from table
order by sortnum is null , sortnum

❸ sql排除為空並且排序的命令

|desc]進行排序,nulls last 時,強制null放在最後,不為null的按聲明順序[asc|desc]進行排序
order by colum asc 時,null默認被放在最前,order by colum desc 時,null默認被放在最後,
ORDER BY IF(ISNULL(update_date),0,1) null被強制放在最前,不為null的按聲明順序[asc|desc]進行排序
ORDER BY IF(ISNULL(update_date),1,0) null被強制放在最後,不為null的按聲明順序[asc|desc]進行排序

❹ SQL中升序排序欄位為空值影響排序結果解決方法

    在公司開發時使用order by *** asc 進行排序時(***欄位為int類型,主要做一個按照數值越小排名越前得功能),出現了所有***列為NULL值的記錄都排在前面的情況。

解決辦法:在排序欄位名前加上-,然後改為降序排序,這樣子有數值的記錄的排序還是跟原來一樣(負負得正),並且這把***列值為NULL的記錄都排在後面了

❺ sql根據條件排序,表中有兩個欄位,如果兩個欄位都不為空且不是「」的時候 排在前面

select a.zdmc,b.zdmc from 表1,表2 a,表2 b where 表1.Zd1=a.Zddm and 表1.ZD2=b.Zddm

❻ SQL排序,將值為0的排最前,其他的按從大到小排列

order by xx!='0',xx DESC 和 order by (case when xx=0 then 0 else 1 end),xx=0 desc 都可以

❼ SQL里ORDER BY 對查詢的欄位進行排序,欄位為空不想排在最前怎麼辦

ORDER BY picturename ASC WHERE picturename <> '' AND picturename IS NOT NULL

資料庫表中空欄位如何排序在前面

二樓不對吧。desc是降序排列的,但是現在的問題是為空的欄位是最小的,可是要裝它們排在前面的話就不能這樣寫了。你的排法只會讓為空的欄位排到最後。

❾ sql對空記錄的排序問題

寫兩個SQL語句:
1、返回按ID正序且ID不為空的記錄 where id <> "" order by id asc
2、返回按ID為空的記錄 where id = ""

❿ sql語句 讓一個欄位有值的排在前邊 沒有值的排在後邊 然後按時間排序

select*from表名orderbycasewhenjiage2=0orjiage2isnullthen1else0end,datas