0

テーブルに最大 2 文字を格納する列があります。たとえば。B、AK、SEなど

そのテーブルに 2 つの行があり、1 つの行には「K」があり、もう1 つの行には値として「BA」があるとします。

私のプロジェクトの要件は、番号に基づいてテーブルから最大値を取得する必要があるというものです。長さに違いがある場合の文字数。この場合、最大値は'K'ではなく'BA'になります。

しかし、クエリでrownum = 1で ' order by column desc 'を使用すると、rownum 0 番目の値として'K'が返されます。

値が「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 に答える