簡體   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