日期:2014-05-17  浏览次数:20440 次

关于一面试题。
好久没发贴了,发个贴攒点人气。

定义了两个变量,不通过第三个变量,把两个变量的值互换,不能用临时表及表变量。最好用SQL解决。
目前想到的是转换为字符型可以实现,还有什么其它方法没?

------解决方案--------------------
用编程语言好像有swap函数吧
------解决方案--------------------
declare @a int,@b int
select @a=2,@b=5

set @a=@a+@b
set @b=@a-@b
set @a=@a-@b

select @a as 'a',@b as 'b'


/*
a b
5 2
*/


这个题目人家经常用来面试


------解决方案--------------------
呵呵,这道题要是有其他语言基础,思路转换到sql上来就比较容易了,2楼大牛正解
------解决方案--------------------

------解决方案--------------------

------解决方案--------------------
这个命题是有限制条件的,如果数据类型接近溢出范围,那么不采取另外一个变量,a+b的话数据就会溢出
另外,如果a,b是varchar类型的,
SQL 如下

DECLARE @a varchar(50),@b varchar(50)
SELECT @a='AA',@b='BBB'

SET @a=@a+@b
SET @b=LEFT(@a,LEN(@a)-LEN(@b))
SET @a=RIGHT(@a,LEN(@a)-LEN(@b))

SELECT @a AS a,@b AS b
/**
a b
BBB AA
**/