728x90

여기저기 뒤져서 Oracle과 다른점들을 찾아냈다.
Sybase는 자료를 찾아봐도 더럽게 없다;;
허나 근성으로 삽질한 끝에 약간의 정보를 입수하였다.
Sybase ASIQ 와 Sybase ASE에서도 많은 차이가 있다는 것도 알았다.
ASE는 제쳐두고 내가 쓰게될 ASIQ의 SQL문을 중점으로 정리해봤다.

먼저 DATA TYPE 부터 비교하면

Oracle

ASIQ

VARCHAR2(size) VARCHAR(size)
NVARCHAR2(size)
NUMBER TINYINT,
SMALLINT,
INT,
UNSIGNED INT,
BIGINT,
UNSIGNED BIGINT
NUMBER(p,s) NUMERIC(p,s),
DECIMAL(p,s)
FLOAT FLOAT
REAL
DOUBLE
LONG VARCHAR(size)
DATE DATE
TIME
DATETIME
SMALLDATATIME
TIMESTAMP, TIMESTAMP
TIMESTAMP
WITH TIME ZONE,
TIMESTAMP
WITH LOCAL TIME ZONE
INTERVAL ….  
RAW(size) BINARY(size)
VARBINARY(size)
LONG RAW LONG BINARY
ROWID  
UROWID [(size)]
CHAR(size) CHAR(size)
NCHAR(size)
CLOB LONG BINARY
NCLOB
BLOB LONG BINARY
BFILE  
  BIT
ANY  
XML
SPATIAL
MEDIA

이러하다.

이제 본격적으로 SQL을 비교해본다.

1. DUMMY TABLE


Oracle에서는 dual를 이용하지만, ASIQ에서는 sys.dummy 를 이용하거나 생략한다.

오라클에서의 예) SELECT sysdate FROM dual;

Sybase ASIQ에서의 예) SELECT now() FROM sys.dummy;

혹은

SELECT now();

2. OUTER JOIN

오라클에서는 일반적으로 아래와 같이 outer join 한다.

오라클에서의 예) SELECT a.부서명, b.이름
FROM 부서테이블 a, 사원테이블 b
WHERE a.부서코드 = b.부서코드(+);

이것을 ASIQ에서는 아래와 같이 표현한다.

Sybase ASIQ에서의 예) SELECT a.부서명, b.이름
FROM 부서테이블 a, 사원테이블 b
WHERE a.부서코드 *= b.부서코드;


3. 테이블 구조보기

오라클에서의 예) desc 테이블명;

Sybase ASIQ에서의 예) sp_iqcolumn 테이블명;


4. 테이블 목록보기

오라클에서의 예) SELECT * FROM tab;

Sybase ASIQ에서의 예) sp_iqtable;

5. 자주쓰는 함수

현재날짜 구하기

오라클에서의 예) SELECT SYSDATE FROM dual;
SELECT CURRENT_DATE FROM dual;

Sybase ASIQ에서의 예) SELECT TODAY() [ FROM sys.dummy ];
SELECT NOW() [ FROM sys.dummy ];
SELECT CURRENT DATE [ FROM sys.dummy ];


소수점 이하 올림을 구하는 함수

오라클에서의 예) SELECT CEIL (12.3) FROM dual;

Sybase ASIQ에서의 예) SELECT CEILING (12.3) [ FROM sys.dummy ];


지정된 소수점 이하를 버리는 함수

오라클에서의 예) SELECT TRUNC(123.4567, 2) FROM dual;

Sybase ASIQ에서의 예) SELECT "TRUNCATE"(123.4567, 2) [ FROM sys.dummy ];

문자열을 연결하는 함수

오라클에서의 예) SELECT CONCAT(CONCAT ( 'a', 'b' ), 'c') FROM dual;
SELECT 'a' || 'b' || 'c' FROM dual;

Sybase ASIQ에서의 예) SELECT STRING('a','b','c') [ FROM sys.dummy ];
SELECT 'a' || 'b' || 'c' [ FROM sys.dummy ];


NULL을 다른 값으로 변환해 주는 함수

오라클에서의 예) SELECT NVL (null,1) FROM dual;
SELECT COALESCE (NULL, 1) FROM dual;

Sybase ASIQ에서의 예) SELECT COALESCE (NULL, 1) [ FROM sys.dummy ];


숫자를 문자로 변환하는 함수

오라클에서의 예) SELECT TO_CHAR (12345) FROM dual;

Sybase ASIQ에서의 예) SELECT STR(12345, 5) [ FROM sys.dummy ];

문자를 숫자로 변경하는 함수

오라클에서의 예) SELECT TO_NUMBER ('123456') FROM dual;

Sybase ASIQ에서의 예) SELECT CAST('123456' AS INT) [ FROM sys.dummy ];


문자를 DATE형으로 변환하는 함수

오라클에서의 예) SELECT TO_DATE('1999-01-02 12:20:53','YYYY-MM-DD HH:MI:SS') FROM dual;

Sybase ASIQ에서의 예) SELECT CAST('1999-01-02 12:20:53' as DATE) [ FROM sys.dummy ];
SELECT CAST('1999-01-02 12:20:53' as DATETIME) [ FROM sys.dummy ];
SELECT DATE('1999-01-02 12:20:53') [ FROM sys.dummy ];
SELECT DATETIME('1999-01-02 12:20:53') [ FROM sys.dummy ];


질의 결과에 번호를 지정하는 함수

오라클에서의 예) SELECT *
FROM 테이블명
WHERE ROWNUM < 100;

Sybase ASIQ에서의 예) SELECT *
FROM 테이블명
WHERE NUMBER(*) < 100;

이외에도 많은 것들이 있겠지만

계속 삽질을 하다보면 알게 되겠지.

뭐... 모르면 할 수 없고... ㅋ

728x90

'DB' 카테고리의 다른 글

OUTER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN  (0) 2012.07.29
UNION ALL  (0) 2012.07.29
마스터 디테일 구조에서 order by  (0) 2012.07.29
OALL8이 불일치 상태입니다  (0) 2012.07.29
MySql dmp  (0) 2012.07.29

+ Recent posts