訂購

2016-01-20 147 views
0

我想在下面爲了訂購

1)特殊字符命令記錄
2)預計只數
3)字母/字母

記錄

G1 
G10 
G19 
123 
87 
[email protected]#$ 
G5 
G25 
G9 

記錄輸出:

[email protected]#$ 
87 
123 
G1 
G5 
G9 
G10 
G19 
G25 

SQL Fiddle

任何人都可以請幫忙。

我已經試過SUBSTRING(name FROM '^(.*?)(\\d+)?$')

+0

用數字排序不支持PostgreSQL排序的順序? – jarlh

+0

是的,我想它支持 – Pramod

+0

如果是這樣,請執行'ORDER BY Records COLLATE numericcollat​​ion'。 (您可能需要分別處理特殊字符...) – jarlh

回答

0

您可以使用正則表達式來匹配標準

SELECT * 
FROM test 
ORDER BY substring(NAME FROM '[$&+,:;[email protected]#|]') -- To get special character 
     ,substring(NAME FROM '^[0-9]*$')::INT -- To get only integer from a value(87 and 123) 
     ,substring(NAME FROM '[0-9]+')::INT -- To get integer from a value (10 from G10) 

SQLFIDDLE-Demo