我正在使用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,哪个在我的情况下就不会有效。
答案 0 :(得分:2)
您可以使用基于长度的条件运算符,如下所示:
SELECT
[Suspect]
, SuspectOP = LEFT(Suspect,3)
, SuspectID = CASE
WHEN LEN(Suspect) = 5 THEN RIGHT(Suspect,2)
ELSE RIGHT(Suspect, 1)
END
请注意,这并不理想,如果您的用例与上述用例类似,您应该将这些值分开。