当前位置:首页 » 编程语言 » 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