可变长度int型的后1到2位

  • 本文关键字:2位 int sql
  • 更新时间 :
  • 英文 :


我正在使用SQL Server,我有一个4到5个字符长的整型。我有一个报告,cast前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

所以我想要读取整型数前3位之后的所有内容

我尝试过的一些事情如下:Select Cast(Suspect as Varchar(5)), Substring(Suspect,3,2)

Select Suspect % 514 as SuspectID

只要前3位数字总是514就可以了,而在我的情况下不是。

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

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

请注意,这不是理想的,如果您的用例就像上面提到的那样,您应该真正地将值分开。

最新更新