본문 바로가기
소소한 ORACLE 지식

[ORACLE]오라클과 MS-SQL 문법 차이

by 해뤼맘 2022. 4. 29.
728x90
반응형

안녕하세요

회사에서 데이터베이스를 오라클과 MS-SQL 모두 사용하다 보니,

오라클과 MS-SQL 쿼리 문법이 다른 것들이 있어 정리해 보았습니다.

 

1. 문자열 자르기

  • 전체 문자열에서 지정한 길이 만큼의 문자열을 조회
오라클 MS-SQL
SUBSTR SUBSTRING
--오라클
SELECT SUBSTR('주말아 빨리와라',1,2)
FROM DUAL
--결과 : 주말

--MSSQL
SELECT SUBSTRING('주말아 빨리와라',1,2)
--결과 : 주말​

 

2. 문자 합치기

  • 두개의 문자를 합칠 때 사용
  • 오라클은 || 또는 CONCAT 두 가지 모두 사용할 수 있습니다.
오라클 MS-SQL
|| 또는 CONCAT +
--오라클1
SELECT '도레미' || '파솔라'
FROM DUAL

--오라클2
SELECT CONCAT('도레미','파솔라') FROM DUAL

--MSSQL
SELECT '도레미' + '파솔라'

--결과 : 도레미파솔라​

 

3. NULL값 처리

  • 조회하려는 컬럼의 값이 NULL일 경우 대체 값을 표시
오라클 MS-SQL
NVL ISNULL
--오라클
SELECT NVL(NAME, '기본')
FROM TEST_TABLE

--MS-SQL
SELECT ISNULL(NAME, '기본')
FROM TEST_TABLE​

4. 문자열 형변환(숫자형 --> 문자형)

  • 숫자를 문자형으로 변환 할 때 사용합니다.
오라클 MS-SQL
TO_CHAR CONVERT
--오라클
--조회 결과는 차이가 없어 보이나, INT 숫자 형이 VARCHAR로 변환 됨
SELECT TO_CHAR(2521)
FROM DUAL

--MSSQL
SELECT CONVERT(VARCHAR(3), 2521)​

 

 

5. 문자열 형 변환(문자형--> 숫자형)

  • 문자형을 숫자형으로 변환할 때 사용합니다.
오라클 MS-SQL
TO_NUMBER CONVERT
--오라클
--조회 결과는 차이가 없어 보이나, VARCHAR 문자형이 INT 숫자형으로 변환 됨
SELECT TO_NUMBER('2521')
FROM DUAL

--MSSQL
SELECT CONVERT(INT, '2521')​

 

6. 글자 수 확인

  • 조회하고자 하는 문자의 글자 수를 확인할 때 사용합니다.
오라클 MS-SQL
LENGTH LEN
-- 오라클
select LENGTH('도레미파솔')
FROM DUAL

--MSSQL
SELECT LEN('도레미파솔')

--결과 : 5​

 

7. 현재 시간 조회

  • DB에서 현재 시간을 조회할 때 사용합니다.
  • 년, 월, 일 / 시, 분, 초까지 조회됩니다.
오라클 MS-SQL
SYSDATE GETDATE()
-- 오라클
SELECT SYSDATE 
FROM DUAL
--결과 : 2022-04-29 17:30:21

-- MSSQL
SELECT GETDATE()
--결과 : 2022-04-29 17:30:21.417​

 

7. 일자 계산하기(일자 더하기/빼기)

  • 현재 조회하는 일자의 특정 일자를 더하거나 뺄 수 있습니다.
오라클 MS-SQL
+ / - DATEADD
--오라클(하루 더하고 빼기)
SELECT SYSDATE +1
FROM DAUL

SELECT SYSDATE -1
FROM DAUL

--MSSQL(하루 더하고 빼기)
SELECT DATEADD(d,1,GETDATE())

SELECT DATEADD(D,-1,GETDATE())​

 

 

7. 조회 한 일자의 특정(년, 월, 일) 조회 하기

  • 조회한 일자에서 녀, 월, 일자만 따로 조회할 수 있습니다.
오라클 MS-SQL
TO_CHAR DATENAME
--오라클
SELECT TO_CHAR(TO_DATE('2022/04/29'),'DD') 
FROM DUAL
-- 결과 : 29

SELECT TO_CHAR(TO_DATE('2022/04/29'),'MM')
FROM DUAL
--결과 : 04

SELECT TO_CHAR(TO_DATE('2022/04/29'),'YYYY')
FROM DUAL
--결과 : 2022

--MSSQL
SELECT DATENAME(day, '2022-04-29')
-- 결과 : 29

SELECT DATENAME(month,'2022-04-29')
-- 결과 : 40

SELECT DATENAME(year, '2022-04-29')
-- 결과 : 2022

 

오라클과 MS-SQL의 문법 차이를 정리해 보았습니다.

 

728x90
반응형

댓글