Postgresql

按字母排序,然後按數字排序

  • March 5, 2015

我有類似的記錄

A5
A4
Z1
B2
C7
C1A
C11A
B1
B4

我希望它們以這種方式排序

A4
A5
B1
B2
B4
C1
C11A
C7
Z1

使用該ORDER BY子句。

我希望它們按字母排序,然後按數值排序。

對於您的要求:

按字母排序,然後按數值排序

我假設(根據您的範例數據)您想要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小提琴。

更多細節:

引用自:https://dba.stackexchange.com/questions/52569