2017-10-09 115 views
0

我在PostgreSQL 9.4數據庫中有一個表,其中一列包含以下格式的整數和字母表數據。PostgreSQL中的字母數字排序9.4

1 
10 
10A 
10A1 
1A 
1A1 
1A1A 
1B 
1C 
1C1 
2 
65 
89 

格式是,它從一個數字開始,然後一個字母表然後數字然後字母表繼續。我想對下面的字段進行排序,

1 
1A 
1A1 
1A1A 
1B 
1C 
1C1 
2 
10 
10A 
10A1 
65 
89 

但是當排序10在2之前。請建議一個可能的查詢以獲得所需的結果。

在此先感謝

回答

0

試試這個

SELECT * 
FROM table_name 
ORDER BY (substring(column_name, '^[0-9]+'))::int  -- cast to integer 
      ,coalesce(substring(column_name, '[^0-9_].*$'),'') 
+0

感謝您的回覆,這個查詢斷裂,如果數量達到字母后,PL檢查輸出。 https://ibb.co/cZ6kJw –