0

我的表中有一个列,最多可存储 2 个字符。例如。B、AK、SE

假设我在该表中有两行,一行具有“K”,另一行具有“BA”作为值。

我的项目中的要求是,我必须根据编号从表中获取最大值。字符的长度以防长度不同。在这种情况下,最大值将是'BA'而不是'K'

但是当我在查询中使用' order by column desc '和rownum = 1时,'K'作为rownum第0个值返回。

如果我有值'D','BA','AK','C'那么输出应该是'BA','AK','C','D' 只是想知道是否有任何方法可以实现我的要求?

4

2 回答 2

3

最简单的方法可能是:

ORDER BY length(<col_name>) desc

更新 - 如果您还需要按值订购,您可以执行以下操作:

ORDER BY length(<col_name>) desc, <col_name> desc
于 2012-06-25T10:22:59.207 回答
0

尝试 :

select * from (
  select row_number() over(order by length(col_name) desc, col_name desc) rn, col_name
  from tab_name
) where rn = 1
于 2012-06-25T10:41:55.347 回答