sql - 有没有办法像空元素一样订购空元素?
问题描述
我需要订购一列并且有很多元素为空或空。问题是空元素的排序与空元素不同
SELECT s.name
FROM Employee s
ORDER BY s.name desc
结果 about 是员工name==null
是第一个位置,之后是具有 name!=null 的元素(是真实姓名),最后是具有 的元素name empty
。
我希望name=null
andname=empty
以相同的方式处理并将所有内容放在第一个结果中?任何人都可以帮助我吗?
解决方案
您可以使用nulls first
ornulls last
子句来确定空值的排序位置,即
order by s.name desc nulls last
如果您希望null
值最后排序而不是第一个或
order by s.name desc nulls first
如果你想要他们那么先排序
在 Oracle 中,没有与空字符串分开的东西,null
因此当您说“空”时,您的意思并不明显。我的猜测是你的意思是一个包含一个或多个空格的字符串,没有别的。如果您想在排序之前从字符串中删除空格,以便将name
1 个空格或 10 个空格的 a 视为与 相同null
,您可以trim
将 name
order by trim(s.name) desc nulls first
请注意,如果 Oracle 使用索引进行name
排序,这可能会影响性能(在这种没有 where 子句的特殊情况下不太可能,但这在实际查询中可能很重要)。您可能需要一个基于函数的索引trim(name)
来支持排序。
推荐阅读
- java - 使用没有私钥的 Java BouncyCastle 从 p7m 中提取 pdf
- flutter - FutureBuilder 构建错误而不是正常部分
- excel - VBA循环遍历工作簿中的所有工作表
- azure - Azure Powershell 中多个应用服务的 AccessRestrictions AddIP
- ng-zorro-antd - 有没有办法自定义 ng-step?
- directx - DuplicateOutput() 因 E_UNEXPECTED 而失败
- excel - 为什么所有这些变体都在正确的公式上?
- javascript - JavaScript:为什么通过从 2 个单选按钮中选择一个,返回两者的值?
- python - python依赖项或库在没有互联网连接的情况下安装/导入
- java - 如何通过警报对话框将项目添加到列表视图