2012-06-25 65 views
0

我在我的表中有一列存储最多2个字符。例如。 B,AK,SE排序在SQl查询

假设我有该表的两行,一个具有'K'和其他具有'BA'作为值。

我的项目需求是这样的,我必须从表中获得最大值的基础上没有。在长度不同的情况下使用字符。在这种情况下,最大值将是'BA'而不是'K'

但是当我“柱递减秩序”使用与ROWNUM我的查询= 1“K”返回为ROWNUM 0个值。

如果我有值'd', 'BA', 'AK', 'C'然后输出应该'BA', 'AK', 'C', 'd' 只是想知道我是否有办法满足我的要求?

+0

你是什么意思是'rownum = 0'?你是不是指'rownum = 1'? –

+0

对不起,错字是rownum = 1 – Anand

回答

3

最简单的方法可能是:

ORDER BY length(<col_name>) desc 

更新 - 如果你需要的价值还下令,你可以这样做:

ORDER BY length(<col_name>) desc, <col_name> desc 
+0

,但这样做,我将无法对单字符/双字符值进行排序。例如。 1)'F'和'H'2)'DF'和'HG' – Anand

+0

编辑我的解释一点点,使其更容易理解 – Anand

+0

@anand,更新了我的答案 –

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