2012-03-29 21 views
1

好的,所以我打算获取数字的最后两位数字的第一个。以12345601为例,我想知道倒数第二个数字是否为0.如果是0,那么我需要它只选择int的最后一个数字,如果不是0,则选择最后两个数字。这就是我:在tsql中使用长度的子串

declare @myint int 
set @myint= 12345601 
select case when substring(cast (@myint as varchar(50)) , len(@myint)-1, len(@myint)-1)  = 0 then right(@myint, 1) 
else right(@myint, 2) end 

不幸的是,它不工作,这就是:

substring(cast (@myint as varchar(50)), len(@myint)-1, len(@myint)-1) 

子字符串是走出来的01,但我需要它出来为0。有任何想法吗?

+0

你可以用一些部门和提醒来解决这个问题... – 2012-03-29 20:56:37

+0

提醒,即关于余数 – sasfrog 2012-03-29 20:58:03

+2

substring(expression,start,_length_) – Steve 2012-03-29 20:58:44

回答

1

试试这个:

SELECT CAST(RIGHT(@myint,2) as int) 

如果你将它转换为int它应该剥夺反正前导零...

你可以用下面的代码中看到它在行动:

declare @myint int 
set @myint= 12345601 
SELECT CAST(RIGHT(@myint,2) as int) 
set @myint= 12345611 
SELECT CAST(RIGHT(@myint,2) as int) 
3

试试这个:

SELECT CASE WHEN LEFT(RIGHT(@myint,2),1) = 0 THEN RIGHT(@myint,1) ELSE RIGHT(@myint,2) END 
+0

工作感谢! – user1301842 2012-03-29 21:02:01

+0

看看@Abe Miessler的回答是很好的解决方案。 – 2012-03-29 21:02:04