【发布时间】:2020-03-06 22:51:50
【问题描述】:
您好,我正在尝试使用 MySQL 选择 3 列之间的最小值。
我面临的问题是在列中我可能有NULL 值。如何获得不是NULL 的最小值?
运行select least(1, 3, NULL) 将返回NULL,但我希望1 作为答案。
感谢您的帮助。
【问题讨论】:
-
列的类型有哪些?它们可以是负面的吗?
您好,我正在尝试使用 MySQL 选择 3 列之间的最小值。
我面临的问题是在列中我可能有NULL 值。如何获得不是NULL 的最小值?
运行select least(1, 3, NULL) 将返回NULL,但我希望1 作为答案。
感谢您的帮助。
【问题讨论】:
least()处理nulls的方式是a documented behavior:
如果任何参数为
NULL,则结果为NULL。无需比较。
这可能看起来很烦人,但是将null 值传播到结果集是您的数据库向您发出信号表明您的值之一未定义的方式;这与涉及null(字符串连接、算术运算等)的其他操作的行为一致。
如果只有第三列可能是null,而其他两列都不是,你可以这样做:
least(col1, col2, coalesce(col3, col1))
【讨论】: