2016-10-21 38 views
0

我正在使用SQL Server,並且我有一個長度爲4到5個字符的int。 我有一個報告,將前3位數字作爲位置並將1到2位數字作爲原因。 因此,這是他們如何看int的最後1到2位數字,長度可變int

5142 = 514 = paint line 2 = paint to thin: 
50528 = 505 = machining 28 = oblong hole: 

SELECT [Suspect] 
     ,left(Suspect,3) as SuspectOP 
     ,Right(Suspect,2) as SuspectID 

這個查詢將返回

5142 = SuspectOP = 514 SuspectID = 42 
50528 = SuspectOP = 505 SuspectID = 28 

所以我想什麼是INT的前3位後讀的一切。

一些我已經嘗試的事情如下: Select Cast(Suspect as Varchar(5)), Substring(Suspect,3,2)

而且

Select Suspect % 514 as SuspectID

只要前3位總是514在我的情況AREN」,這確實工作噸。

+1

好的。這很好。祝你好運。你有問題嗎?這個網站是爲了問題,而不是一個地方轉儲你的待辦事項/我想要的名單 –

+0

@MarcB這是一個苛刻的說法。嘗試在未來對新用戶很好。 – wizzwizz4

+0

@ wizzwizz4:那麼當用戶提出第一個問題時,或許新用戶應該實際閱讀網站faq。 –

回答

2

你可以使用基於長這樣的條件運算符:

SELECT 
    [Suspect] 
    , SuspectOP = LEFT(Suspect,3) 
    , SuspectID = CASE 
        WHEN LEN(Suspect) = 5 THEN RIGHT(Suspect,2) 
        ELSE RIGHT(Suspect, 1) 
        END 

你要知道,這不是理想的,你真的應該保持分隔值,如果你的使用情況就像提到的一個。

+0

OP發佈了一條評論,我認爲這是針對您的答案的問題:http://stackoverflow.com/questions/40181643/last-1-to-2-digits-of-a-int-with-a- varible長度INT#comment67631174_40181643 – wizzwizz4

相關問題