你好,我需要按時間順序排列建築物列表。下面是一個例子如何訂購MS SQL中的Buildingnumber時間順序?
select building from adress order by building asc
結果:
Emil
G1
G10
G2
G3
G4
G5
我需要的是這樣的順序:
Emil
G1
G2
G3
G4
G5
G10
這可能嗎?或者我應該創建一個優先級列表,在那裏我可以像優先級那樣訂購它?
你好,我需要按時間順序排列建築物列表。下面是一個例子如何訂購MS SQL中的Buildingnumber時間順序?
select building from adress order by building asc
結果:
Emil
G1
G10
G2
G3
G4
G5
我需要的是這樣的順序:
Emil
G1
G2
G3
G4
G5
G10
這可能嗎?或者我應該創建一個優先級列表,在那裏我可以像優先級那樣訂購它?
我想你在數字前總是有一個字母。
這樣我就在你的信件(A,B,C ... G等)之前和建築物的號碼之前命令。
試試這個:
SELECT building
FROM address
ORDER BY SUBSTRING(building, 1, 1), CONVERT(int, SUBSTRING(building, 2, 100))
編輯
可以使用PATINDEX
功能正則表達式(如勸here)
SELECT building
FROM address
ORDER BY SUBSTRING(building, 1, PATINDEX('%[0-9]%', building) - 1),
CONVERT(int, SUBSTRING(building, PATINDEX('%[0-9]%', building), 100))
只有alpha分量是固定的 – daniele3004 2014-10-30 08:55:24
@ daniele3004:是的,在我的答案的頭部我寫道:「我想你在數字前總是有一個字母。」 – 2014-10-30 08:56:30
:-) yess ........我喜歡你的回答 – daniele3004 2014-10-30 08:59:33
這是一個經典:-)
我的建議,這就是我所做的。 每個表格都自動具有唯一的ID。
如果您的數據按順序插入,請使用訂購分子來訂購這些字段,這通常是表格的ID。
否則,您可以在表的單獨列中管理分子。
如果你的「G」組成部分是動態使用該解決方案
SELECT building
FROM address
ORDER BY ID_COLUMN_ORDER
否則,如果你的組件「G」是固定使用這個
SELECT building
FROM address
ORDER BY SUBSTRING(building, 1, 1), CONVERT(int, SUBSTRING(building, 2, 100))
是有「大廈」列的任何特定的格式? – 2014-10-30 08:54:35
不,它是隨機的。 – 2014-10-30 09:08:58