如何在SQL Server 2000中一起添加2位数

时间:2009-11-26 21:29:56

标签: sql-server tsql sql-server-2000

假设我有一个数字62.这是由2位数组成的

如何将2位数加在一起除以10,如果结果= 6.2之类的东西只需要提醒

 declare @Number int,@Result int
 set @Number =62

 if len(@Number) > 1
 set  @Result=????=--Add 6 and 2 =8

 set @result=@result % 10  --Mod operator

  print @result 

 -- the result should be 2 in this case

我做错了什么?

非常感谢

6 个答案:

答案 0 :(得分:1)

我认为@Number % 10正是您所寻找的。它返回任何数字的最后一位数字。 62 - > 2,97 - > 7等...

更新

我可能误解了这个问题。也许你想要10 % ((@Number / 10) + @Number)

(@Number / 10) + @Number是两位数字的数字之和。

答案 1 :(得分:1)

set @tens = floor(@Number / 10);
set @ones = @number - @tens;
set @Result = @tens + @ones;

或使用leftright访问子字符串。

答案 2 :(得分:1)

我无法尝试:

DECLARE @Number VARCHAR(2) 
SET @Number = '62'

declare @firstNum INT, @secondNum INT
SET @firstNum = CAST(SUBSTRING(@Number, 1, 1) AS INT)
SET @secondNum = CAST(SUBSTRING(@Number, 2, 1) AS INT)

DECLARE @Result int

SET @Result = (@firstNum + @secondNum) % 10

答案 3 :(得分:0)

如果号码总是两位数,那么我会使用LEFT(@Number,1)RIGHT(@Number,1)来访问每个数字。如果不是,请回复,我会给你一些你需要的循环帮助。

更迫切的问题是你期待2,但是8 mod 10的结果是8.如果你正在寻找2,那么总和是10 mod 8 (10 % @Result)

无论如何,如果这不能完全回答你的想法,请回击我。

答案 4 :(得分:0)

试试这个

declare @myNumber float,@result float  
set @myNumber = 62 

select 
@result = (case when len(@myNumber) = 1 then @myNumber 
  else (@myNumber /10) + cast(@myNumber as int) % 10 end)

select [Output] = STUFF(
    cast(@result as varchar(50))
    ,1
    ,charindex('.',cast(@result as varchar(50)))    
    ,'')

Output
2

希望这有帮助

如果您只想添加2个数字,请尝试此操作(尽管已在上面实施)

declare @myNumber int,@result int  
set @myNumber = 62 

select 
Result = (case when len(@myNumber) = 1 then @myNumber 
else (@myNumber /10) + @myNumber % 10 end)

Result
8

答案 5 :(得分:0)

所以我想你想要这样的东西 - 解析代表你的数字的字符串,将各个数字加起来作为整数值。这最终会给你一个总结果 - 然后你做任何你需要做的事情。此代码适用于任何长度的字符串(最多50个字符=原始数字中的50个数字):

DECLARE @Number INT 
SET @Number = 62

DECLARE @NumString VARCHAR(50)
SET @NumString = CAST(@Number AS VARCHAR(50))

DECLARE @Index INT
SET @Index = 1

DECLARE @Sum INT
SET @Sum = 0

WHILE @Index <= LEN(@NumString)
BEGIN
   SET @Sum = @Sum + CAST(SUBSTRING(@NumString, @Index, 1) AS INT)
   SET @Index = @Index + 1
END

SELECT @Sum AS 'Sum of all digits'

对于@Number的初始值为“62”,我得到8的结果 - 现在您可以继续使用该值。

如果您经常需要此功能,我可能会将其封装到用户定义的函数中,以便您可以在代码中的任何位置调用它。