2016-10-21 10 views
0

SQL Serverを使用していて、4〜5文字の長さのintがあります。 最初の3桁を場所に、最後の1〜2桁を原因としてキャストするレポートがあります。 だから、これは彼らがこのクエリは可変長intを持つintの最後の1〜2桁

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

を返します

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 

を見てどのようであるので、私が何をしたいのintの最初の3桁の数字の後に、すべてを読むことです。

次のように私が試してみました事のいくつかは、次のとおりです。 Select Cast(Suspect as Varchar(5)), Substring(Suspect,3,2)

そして

限り、最初の3桁は常に私の場合には「AREN 514あるとして動作します

Select Suspect % 514 as SuspectID

をt。

+1

それはすばらしい。それで幸運。あなたは質問がありましたか?このサイトは、あなたのto-do/i-wantリストをダンプする場所ではなく、質問のためのサイトです。 –

+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-with-a- varible-length-int#comment67631174_40181643 – wizzwizz4

関連する問題