gpt4 book ai didi

mysql - 使 LEAST() 函数返回非空值

转载 作者:行者123 更新时间:2023-11-29 06:41:44 28 4
gpt4 key购买 nike

我有 5 列日期(col1、col2、col3、col4、col5),其中一些为空或为 null。我需要从所有这些列中找到一个最短日期。

我正在使用“least”函数,它工作正常,但如果我有一列包含日期而其他列为空,则“least”将返回给我空字段!

如何跳过空字段或空列,并仅返回日期!或者我需要在使用最少功能之前检查每一列是否为空!谢谢!

select id, least(vi_date1, vi_date2,vi_date3,vi_date4,vi_date5) as "Min Date", vi_date1, vi_date2,vi_date3,vi_date4,vi_date5 from table

最佳答案

只需使用 IF(col <> '', col, '...')将 NULL 和空字符串转换为大(或小)值,然后使用 LEAST(或 GREATEST)函数:

SELECT
NULLIF(LEAST(
IF(vi_date1 <> '', vi_date1, '9999-12-31'),
IF(vi_date2 <> '', vi_date2, '9999-12-31'),
IF(vi_date3 <> '', vi_date3, '9999-12-31'),
IF(vi_date4 <> '', vi_date4, '9999-12-31'),
IF(vi_date5 <> '', vi_date5, '9999-12-31')
),'9999-12-31') AS Min_Date,
NULLIF(GREATEST(
IF(vi_date1 <> '', vi_date1, '1000-01-01'),
IF(vi_date2 <> '', vi_date2, '1000-01-01'),
IF(vi_date3 <> '', vi_date3, '1000-01-01'),
IF(vi_date4 <> '', vi_date4, '1000-01-01'),
IF(vi_date5 <> '', vi_date5, '1000-01-01')
),'1000-01-01') AS Max_Date,
vi_date1,
vi_date2,
vi_date3,
vi_date4,
vi_date5
FROM testdata

DB Fiddle

关于mysql - 使 LEAST() 函数返回非空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51311594/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com