Oracle - 返回一组行中的最短字符串值

MNI*_*NIK 9 sql oracle plsql

我正在尝试编写一个返回列中最短字符串值的查询.例如:如果ColumnA具有值ABCDE,ZXDR,ERC,则查询应返回"ERC".我写了以下查询,但我想知道是否有更好的方法来做到这一点?

查询应返回单个值.

select distinct ColumnA from
(
  select ColumnA, rank() over (order by length(ColumnA), ColumnA) len_rank 
    from TableA where ColumnB = 'XXX'
)
where len_rank <= 1
Run Code Online (Sandbox Code Playgroud)

IMH*_*MHO 9

怎么样:

select ColumnA
from
(
  select ColumnA
  from tablea
  order by length(ColumnA) ASC
)
where rownum = 1
Run Code Online (Sandbox Code Playgroud)