通过 CASE 语句处理 Order 和 NULL 值
Dealing with Order by CASE Statements and NULL value
我想根据列自定义排序依据。如果列值为 NULL 或 ''(空字符串),那么我想先显示该行。 SQL 服务器不喜欢以下内容:
ORDER BY
CASE WHEN ISNULL(SendDate.ValidTo, '') = ''
THEN NULL
END
或
ORDER BY
CASE WHEN ISNULL(SendDate.ValidTo, '') = ''
THEN ISNULL(SendDate.ValidTo, '') = ''
END
是否可以接受以下操作?:
ORDER BY
CASE WHEN ISNULL(SendDate.ValidTo, '') = ''
THEN SendDate.ValidTo
END
您可以分配一个数字,根据您的 CASE
语句的不同结果进行排序,如下所示:
ORDER BY CASE WHEN COALESCE(SendDate.ValidTo,'') = '' THEN 1 ELSE 2 END
我意识到,我本可以做到以下几点:
ORDER BY
ISNULL(SendDate.ValidTo, '1900-01-01')
我想根据列自定义排序依据。如果列值为 NULL 或 ''(空字符串),那么我想先显示该行。 SQL 服务器不喜欢以下内容:
ORDER BY
CASE WHEN ISNULL(SendDate.ValidTo, '') = ''
THEN NULL
END
或
ORDER BY
CASE WHEN ISNULL(SendDate.ValidTo, '') = ''
THEN ISNULL(SendDate.ValidTo, '') = ''
END
是否可以接受以下操作?:
ORDER BY
CASE WHEN ISNULL(SendDate.ValidTo, '') = ''
THEN SendDate.ValidTo
END
您可以分配一个数字,根据您的 CASE
语句的不同结果进行排序,如下所示:
ORDER BY CASE WHEN COALESCE(SendDate.ValidTo,'') = '' THEN 1 ELSE 2 END
我意识到,我本可以做到以下几点:
ORDER BY
ISNULL(SendDate.ValidTo, '1900-01-01')