試試這個:
SELECT column
FROM table
ORDER BY CASE WHEN SUBSTRING(column,LEN(column)-1,1) = '.'
THEN 0
ELSE 1
END, column
這將使那些在第二個是.
到最後的位置首先在訂購任何字符串。
編輯:
關於第二個想法,這不會與領先的 'AB' 工作 'ACA' 等試試這個:
SELECT column
FROM table
ORDER BY SUBSTRING(column,1,2), --This will deal with leading letters up to 2 chars
CASE WHEN SUBSTRING(column,LEN(column)-1,1) = '.'
THEN 0
ELSE 1
END,
Column
EDIT2:
要補償第二個數字集,請使用:
SELECT column
FROM table
ORDER BY substring(column,1,2),
CASE WHEN substring(column,charindex('.',column) + 2,1) = '.' and substring(column,len(column)-1,1) = '.' THEN 0
WHEN substring(column,charindex('.',column) + 2,1) = '.' and substring(column,len(column)-1,1) <> '.' THEN 1
WHEN substring(column,charindex('.',column) + 2,1) <> '.' and substring(column,len(column)-1,1) = '.' THEN 2
ELSE 3 END, column
基本上,這是通過考慮每個條件來強制進行等級排序的手動方法。
如果你的字符串總是用句點分隔的3個數字,你可以用句點作爲分隔符,轉換爲整數和排序根據結果對其進行分析。 –
不幸的是,它可以AB 1.1或AB 1.1。1或AB 1個 – Andyww