Apache Impala SQL字符串列排序:日期前置,字符值后置
Apache Impala 字符串列混合日期与字符的排序方案
针对你需要对包含日期格式字符串和纯字符值的column1列排序(日期降序在前、Older在后)的需求,普通ORDER BY无法实现,以下是可行的SQL写法:
SELECT column1, column2, column3 FROM table1 ORDER BY CASE WHEN STR_TO_DATE(column1, 'dd.MM.yyyy') IS NOT NULL THEN 1 ELSE 2 END, STR_TO_DATE(column1, 'dd.MM.yyyy') DESC;
逻辑说明:
STR_TO_DATE(column1, 'dd.MM.yyyy')会将符合dd.mm.yyyy格式的字符串转换为日期类型,无法转换的Older会返回NULL。- 第一个排序条件通过
CASE WHEN把有效日期标记为1,无效值标记为2,确保所有日期排在Older前面。 - 第二个排序条件对转换后的日期按降序排列,实现
20.03.2023在前、19.03.2023在后的效果。
内容的提问来源于stack exchange,提问作者BiSaM
相关产品推荐
相关产品推荐

