내가 하는일/SQL

컬럼값 교환

Tenin 2010. 2. 4. 09:30

UPDATE 에는 컬럼 값이 설정될때 로컬 변수 값도 설정하여 개발자가 이 로컬 변수를 갱신 작업 자체에서 사용할수 있는 멋진 기능이 있다.

T-SQL은 왼쪽에서 오른쪽으로 진행되기 때문에 로컬 변수를 SET절의 왼쪽에서 설정하고, 이를 오른쪽 뒤에서 사용하여 컬럼값을 지정해

줄 수 있다. 예를 들어, 이 기능을 두 컬럼의 값을 서로 바꾸기 위해 사용할 수 있는데, 아래 예제를 살펴보자

CREATE TABLE #samples
(k1        int identity,
 samp1  INT ,

 samp2  INT

)

INSERT #samples ( samp1, samp2) VALUES( 1,2)

INSERT #samples ( samp1, samp2) VALUES( 3,4)

INSERT #samples ( samp1, samp2) VALUES( 5,6)

 

SELECT * FROM #samples

 

DECLARE @swap float

 

UPDATE #samples
SET         @swap=samp1,
        samp1=samp2,

        samp2=@swap

SELECT * FROM #samples

GO
DROP TABLE #samples

 

 

UPDATE 문장에 의해 참조되는 컬럼 값들은 항상 연산 이전의 값을 반영하기 때문에, 이들을 교환하기 위해 매개변수를 사용하지 않아도 된

다. 아래처럼 말이닷!

 UPDATE #sample

 SET samp1 = samp2, samp2= samp1