oracle中比较四个列时间大小,并返回时间小的字段名,为空的列不参与比较
时间: 2023-09-06 08:13:50 浏览: 113
可以使用 `LEAST` 函数来实现:
```sql
SELECT LEAST(COALESCE(col1, to_date('9999-12-31', 'YYYY-MM-DD')),
COALESCE(col2, to_date('9999-12-31', 'YYYY-MM-DD')),
COALESCE(col3, to_date('9999-12-31', 'YYYY-MM-DD')),
COALESCE(col4, to_date('9999-12-31', 'YYYY-MM-DD')))
FROM your_table;
```
其中,`COALESCE` 函数用于转换 `NULL` 值为一个较大的日期值,确保 `LEAST` 函数不会返回 `NULL` 值。
如果需要返回时间小的字段名,可以使用类似下面的语句:
```sql
SELECT CASE LEAST(COALESCE(col1, to_date('9999-12-31', 'YYYY-MM-DD')),
COALESCE(col2, to_date('9999-12-31', 'YYYY-MM-DD')),
COALESCE(col3, to_date('9999-12-31', 'YYYY-MM-DD')),
COALESCE(col4, to_date('9999-12-31', 'YYYY-MM-DD')))
WHEN col1 THEN 'col1'
WHEN col2 THEN 'col2'
WHEN col3 THEN 'col3'
WHEN col4 THEN 'col4'
END AS min_col_name
FROM your_table;
```
阅读全文