繁体   English   中英

ORACLE SQL-确定最大值,何时值可以是仅字母数字或仅数字,并且字母应大于数字

[英]ORACLE SQL - Determine, MAX value, when values could be alphanumeric-only or digits-only, and letters should be greater than digits

当值可以是仅字母数字或仅数字时,我想确定Oracle中的最大值。 说:

  • COLUMN_001 ,具有值
  • [R
  • BA
  • 4
  • 85

当我使用Oracle MAX函数时,例如:

从TABLE_001 T中选择SELECT MAX(T.COLUMN_002);

现在返回我:

  • BA

因为:

  • 4 < 85 < R < BA

我想要的是一个函数,对于该函数,字母将大于数字,例如:

  • R < BA < 4 < 85

所以下面的示例将返回我不是BA,而是:

  • 85

将原件改写为:

select t.COLUMN_002
from (select t.COLUMN_002
      from TABLE_001 t
      order by t.COLUMN_002
     ) t
where rownum = 1;

使用此版本,您可以更改order by并获得所需的任何值:

select t.COLUMN_002
from (select t.COLUMN_002
      from TABLE_001 t
      order by (case when substr(t.COLUMN_002, 1, 1) between '0' and '9' then 1 else 2 end),
               t.COLUMN_002
     ) t
where rownum = 1;

如果您不喜欢子查询,也可以为此使用KEEP构造。

select string from
(
select rank () over (partition by case order by string desc) rnk,string,case 
from
(select case  when substr(string,1,1) between '0' and '9' then 1 else 2 end case ,string
from ex_b
order by string desc) tbl
) tbl_1
where rnk = 1
and case = 1

This query will give the desired result
Regards,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM