web-dev-qa-db-ja.com

アルファベット順、次に数字順

私のような記録があります

 A5
 A4
 Z1
 B2
 C7
 C1A
 C11A
 B1
 B4

このように並べ替えてほしい

A4
A5
B1
B2
B4
C1
C11A
C7
Z1

ORDER BY句。

アルファベット順に並べ替えてから、数値順に並べ替えてください。

4
Abhishek

あなたの要求のために:

アルファベット順、次に数値順

私はあなたがしたい(あなたのサンプルデータから派生した)と思いますORDER BY

  1. textとして扱われる最初の文字。

  2. integerとして扱われる最初の数値(連続する数字)。

  3. textとして扱われる、残りの結合を解除する文字列全体。必要な場合とそうでない場合があります。

SELECT *
FROM   tbl
ORDER  BY left(col, 1)  -- 1st letter as text
     , substring(fest, '\d+')::int NULLS FIRST  -- first number in string as int
     , col  -- whole columns as cheap tiebreaker

SQLフィドル。

詳細:

9