具有可变长度int的int的最后1到2位数

时间:2016-10-21 16:40:07

标签: sql

我正在使用SQL Server,我有一个长度为4到5个字符的int。 我有一个报告,将前3位数作为位置,并将最后1到2位数作为原因。 所以这就是他们的样子

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,哪个在我的情况下就不会有效。

1 个答案:

答案 0 :(得分:2)

您可以使用基于长度的条件运算符,如下所示:

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

请注意,这并不理想,如果您的用例与上述用例类似,您应该将这些值分开。