2014-09-27 45 views
0

考慮存儲在nvarchar列下面的數據得到最高值:SQL - 從一個字符串片段

11290796 
21290795 
31290794 

我需要獲得與最後四個字符的最高int值的數據,這樣的結果應該是像這樣:

11290796

+0

MAX(CONVERT((SUBSTRING(myColumn,-4,4)),SIGNED INTEGER))as greatestNum – 2014-09-27 18:42:39

+2

爲什麼要在nvarchar列中存儲數字,並且如果最後四位數字很重要,爲什麼?它代表應該分開存儲的東西嗎? – 2014-09-27 18:45:51

回答

0

最好是將該列定義爲int的,而不是爲varchar,你可以得到所需要的右和投

Declare @maxval int = 
(select 
max(cast (right(col, 4) as int)) from TableA) 
Select * from TableA where cast (right(col, 4) as int) = @maxval 
+0

這不會返回整個字符串。 – 2014-09-27 18:46:44

+0

不錯,除了OP有列作爲varchar,並提出一個基於保持varchar列的問題 – 2014-09-27 18:49:56

+0

它完全符合我的需求。謝謝!此時不能修改架構,否則我們會將其更改爲int當然:) – 2014-09-27 18:49:56

相關問題