如何在SQL中的一个特定行中找到最小非空列?

前端之家收集整理的这篇文章主要介绍了如何在SQL中的一个特定行中找到最小非空列?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在同一个表中找到一行中的两列中最小的数字,其中一列可能在特定行中为空.如果其中一列为空,我希望该行返回的另一列中的值为这种情况下最低的非空列.如果我在 MySQL 5.1中使用least()函数
select least(1,null)

这返回null,这不是我想要的.在这种情况下,我需要查询返回1.

我已经能够得到我想要的结果一般这个查询

select least(coalesce(col1,col2)),coalesce(col2,col1))

只要col1和col2都不为空,每个coalesce语句将返回一个数字,而最小()处理查找最低的.

有没有更简单/更快的方式来做到这一点?在这种情况下,我使用的是MysqL,但欢迎采用一般解决方案.

解决方法

对于MysqL 5.0.13( http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_least),不幸的是(对于您的情况)LEAST的行为已更改 – 仅当所有参数为NULL时,才会返回NULL.

这个变化甚至被报告为一个错误http://bugs.mysql.com/bug.php?id=15610
但修复程序仅限于MysqL文档,解释新行为和兼容性中断.

您的解决方案是推荐的解决方法之一.另一个可以使用IF运算符:

SELECT IF(Col1 IS NULL OR Col2 IS NULL,COALESCE(Col1,Col2),LEAST(Col1,Col2))
原文链接:https://www.f2er.com/mssql/74800.html

猜你在找的MsSQL相关文章