oracle/达梦多字段排序,其中多个字段含有空值

问题场景:用户提出需求,想在查询列表上实现多字段排序效果,其中字段有日期类型字符类型和数值类型,三个字段含有空值。按照条件查询的分页方法之前其他人已经写好并验证功能。

问题分析:oracle在排序时默认null值最大,如果多个关键字按照降序排列,那展示在第一页的列表数据就会有很多关键字都是空值,这肯定不符合用户期望。

解决思路:个人解决思路是在分页查询结果集不为空的情况下,通过case when函数把字段中的空值按排序要求转换成最大值和最小值,获取结果集之后在代码里将其转换回去。

sql逻辑如下所示,其中ROWNUM 和ROW_ID 用于分页使用,ROWNUM <= 分页最大值,ROW_ID >分页最小值-1,比如每页10,查找第二页数据,那就是从11到20,ROW_ID >10,ROWNUM <=20。当然我们也可以在QueryWrapper中使用.last拼接sql语句,如果有其他更快更好的方法希望大家多多指正。

SELECT
	* 
FROM
	(
	SELECT
		TMP.*,
		ROWNUM ROW_ID 
	FROM
		(
		SELECT
			* 
		FROM
			(
			SELECT
				FID AS id,
			    CASE WHEN FBENE_OWNER_CERT_VALID_DATE IS NULL THEN DATE '2000-01-01' 
				ELSE FBENE_OWNER_CERT_VALID_DATE END AS beneOwnerCertValidDate,
				FBENE_OWNER_CERT_NO AS beneOwnerCertNo,
				FAML_LEDGER_ID AS amlLedgerId,
				FBENE_OWNER AS beneOwner,
				FBENE_OWNER_CERT_TYPE beneOwnerCertType,
				FBENE_OWNER_ADDRESS AS beneOwnerAddress 
			FROM
				T_CUST_AML_LEDGER_BENEFICIARY 
			) a 
		ORDER BY
			a.beneOwnerCertValidDate DESC,
			a.beneOwnerCertNo DESC 
		) TMP 
	WHERE
		ROWNUM <= 10 
	) 
WHERE
	ROW_ID > 0

相关推荐

  1. oracle/字段排序其中字段含有

    2024-04-25 12:46:05       15 阅读
  2. mysql 字段组合查询,删除重复

    2024-04-25 12:46:05       13 阅读
  3. 【pg】字段查重过滤

    2024-04-25 12:46:05       45 阅读
  4. Oracle之ORA-29275: 部分字节字符

    2024-04-25 12:46:05       41 阅读
  5. Hive某字段用同组该字段填充

    2024-04-25 12:46:05       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-25 12:46:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-25 12:46:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-25 12:46:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-25 12:46:05       20 阅读

热门阅读

  1. c++day2

    c++day2

    2024-04-25 12:46:05      11 阅读
  2. Linux系统编程_文件编程

    2024-04-25 12:46:05       12 阅读
  3. 添加修改ubuntu中环境变量(PATH)

    2024-04-25 12:46:05       13 阅读
  4. 【ARMv9 DSU-120 系列 3 -- 系统控制寄存器】

    2024-04-25 12:46:05       13 阅读
  5. Flink 作业管理器:核心功能、角色与责任详解

    2024-04-25 12:46:05       14 阅读
  6. 在Linux中eth0旁边的lo是什么

    2024-04-25 12:46:05       13 阅读
  7. vue2使用elementUI报错

    2024-04-25 12:46:05       35 阅读
  8. 学习笔记-微服务高级(黑马程序员)

    2024-04-25 12:46:05       15 阅读
  9. 4月24日,每日信息差

    2024-04-25 12:46:05       16 阅读
  10. python元组与列表的区别

    2024-04-25 12:46:05       44 阅读
  11. Okapi Framework

    2024-04-25 12:46:05       17 阅读
  12. Android配置环境

    2024-04-25 12:46:05       21 阅读
  13. C++读写二进制文件

    2024-04-25 12:46:05       12 阅读