一道SQL面试题

题目:已知小小+霸霸+王王=小霸王,请用SQL求出小、霸、王分别代表的数字。

解法1:

declare @i int, @j int ,@k int
set @i=1
set @j=1
set @k=1
while @i<10
  begin
    while @j<10
      begin
      while @k<10
        begin
         if 11*(@i+@j+@k)=100*@i+10*@j+@k
          begin
            select @i as N'小',@j as N'霸',@k as N'王'
            break;
          end
         else
           set @k=@k+1
      end
           set @j=@j+1
           set @k=1
   end
     set @i=@i+1
     set @j=1
     set @k=1
end
解法2:

declare @data int, @i int, @j int ,@k int
set @data=100
while(@data<=999)
begin
 set @i=@data/100
 set @j=@data/10%10
 set @k=@data%10
 if((@i+@j	+@k)*11=@data)
   begin
    select @data data,@i i,@j j ,@k k 
    break
   end
   set @data=@data+1
end

结论:小霸王分别为1,9,8也就是11+99+88=198。题目很简单,写的SQL脚本一看也能看懂,两种思路(严格意思上来说不是)一下子看出差别。

你可能感兴趣的:(sql,腾讯,面试题,小霸王)