2014년 4월 17일 목요일

MS-SQL 에서 DUAL ?

오라클에선 DUAL 이라는 테이블이 종종 쓰인다.
예를 들어

select sysdate from dual;
select 1 + 1 from dual;
...

이런것...

dual 이라는 테이블은 그저 구색 맞추기 일뿐, 실제로 dual 이라는 테이블의 값은 쓰이지 않는다.
(여기서 dual 테이블은 실제로 존재하며 ' select * from dual ' 이렇게 조회를 해보면 'X' 라는 값, 딱 1개, 1줄만 들어 있다.)

그렇다면 MS-SQL 에서는 오라클에서 dual 이라는 테이블 역할을 하는 테이블이 없는것일까?
결론 부터 말하면 없다.

MS-SQL 에서는 그냥

select getdate();
select 1 + 1;
...

이러면 된다.

만약 반드시 daul 이라는 테이블을 써야 겠다면?
위에 설명 했다시피 오라클의 dual 테이블은 'X' 라는 값이 딱 1줄만 들어 있는 테이블이다.
그러므로 똑같이 'X' 라는 값이 딱 1줄만 들어 있는 테이블을 하나 만들어 주던가.

MERGE INTO  Table01
      USING (select 'X' as DUAL)
...

이렇게 하면 된다.