일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 이클립스
- JEUS
- error
- 함수
- 튜닝
- DB
- 에러
- Book
- 자바
- 기타소득
- 데이터베이스
- 오라클
- JavaScript
- miplatform
- java
- 오류
- 성능
- Report Designer
- 도서
- 마이플랫폼
- 엑셀
- 회계
- 태그를 입력해 주세요.
- MIP
- 한글
- Excel
- oracle
- Eclipse
- Tomcat
- 톰캣
- Today
- Total
어느 가을날의 전환점
DB|ORACLE vs MS-SQL 함수 비교 본문
수식/수치 연산 함수
다음은 Oracle에서 지원하는 수식/수치 연산 함수와 그에 상응하는 Microsoft SQL Server의 함수를 정리한 표입니다.
함수 설명 | Oracle | Microsoft SQL Server |
---|---|---|
절대 값 | ABS | ABS |
아크 코사인 | ACOS | ACOS |
아크 사인 | ASIN | ASIN |
n의 아크 탄젠트 | ATAN | ATAN |
n과 m의 아크 탄젠트 | ATAN2 | ATN2 |
최소 정수 >= 값 | CEIL | CEILING |
코사인 | COS | COS |
쌍곡선 코사인 | COSH | COT |
지수 값 | EXP | EXP |
최대 정수 <= 값 | FLOOR | FLOOR |
자연 로그 | LN | LOG |
밑이 n인 로그 | LOG(N) | 해당 없음 |
상용 로그 | LOG(10) | LOG10 |
나머지 연산자 | MOD | USE MODULO (%) OPERATOR |
거듭제곱 | POWER | POWER |
난수 | 해당 없음 | RAND |
반올림 | ROUND | ROUND |
숫자 부호 표시 | SIGN | SIGN |
사인 | SIN | SIN |
쌍곡선 사인 | SINH | 해당 없음 |
제곱근 | SQRT | SQRT |
탄젠트 | TAN | TAN |
쌍곡선 탄젠트 | TANH | 해당 없음 |
잘라내기 | TRUNC | 해당 없음 |
목록의 최대값 | GREATEST | 해당 없음 |
목록의 최소값 | LEAST | 해당 없음 |
NULL일 때 숫자 변환 | NVL | ISNULL |
문자열 함수
다음은 Oracle에서 지원하는 문자열 함수 및 그에 상응하는 Microsoft SQL Server의 함수를 정리한 표입니다.
함수 설명 | Oracle | Microsoft SQL Server |
---|---|---|
문자를 ASCII로 변환 | ASCII | ASCII |
문자열 연결 | CONCAT | (식 + 식) |
ASCII를 문자로 변환 | CHR | CHAR |
문자열의 문자 시작 위치 반환(왼쪽부터) | INSTR | CHARINDEX |
소문자로 변환 | LOWER | LOWER |
대문자로 변환 | UPPER | UPPER |
문자열의 왼쪽 채우기 | LPAD | 해당 없음 |
선행 공백 제거 | LTRIM | LTRIM |
후행 공백 제거 | RTRIM | RTRIM |
문자열의 패턴 시작 위치 | INSTR | PATINDEX |
문자열을 여러 번 반복 | RPAD | REPLICATE |
문자열의 발음 기호 | SOUNDEX | SOUNDEX |
반복되는 공백 문자열 | RPAD | SPACE |
수치 데이터에서 변환된 문자 데이터 | TO_CHAR | STR |
부분 문자열 | SUBSTR | SUBSTRING |
문자 바꾸기 | REPLACE | STUFF |
문자열에서 각 단어의 첫 문자를 대문자로 만들기 | INITCAP | 해당 없음 |
문자열 번역 | TRANSLATE | 해당 없음 |
문자열 길이 | LENGTH | DATELENGTH 또는 LEN |
목록에서 가장 큰 문자열 | GREATEST | 해당 없음 |
목록에서 가장 작은 문자열 | LEAST | 해당 없음 |
NULL일 때 문자열 변환 | NVL | ISNULL |
날짜 함수
다음은 Oracle에서 지원하는 날짜 함수 및 그에 상응하는 Microsoft SQL Server의 함수를 정리한 표입니다.
함수 설명 | Oracle | Microsoft SQL Server |
---|---|---|
날짜 추가 | (날짜 열의 +/- 값) 또는 ADD_MONTHS | DATEADD |
날짜 차이 | (날짜 열의 +/- 값) 또는 MONTHS_BETWEEN | DATEDIFF |
현재 날짜와 시간 | SYSDATE | GETDATE() |
달의 마지막 날 | LAST_DAY | 해당 없음 |
표준 시간대 변환 | NEW_TIME | 해당 없음 |
다음 날의 요일 | NEXT_DAY | 해당 없음 |
날짜의 문자열 표시 | TO_CHAR | DATENAME |
날짜의 정수 표시 | TO_NUMBER(TO_CHAR)) | DATEPART |
날짜 반올림 | ROUND | CONVERT |
날짜 잘라내기 | TRUNC | CONVERT |
문자열을 날짜로 | TO_DATE | CONVERT |
NULL일 때 날짜 변환 | NVL | ISNULL |
변환 함수
다음은 Oracle에서 지원하는 변환 함수 및 그에 상응하는 Microsoft SQL Server의 함수를 정리한 표입니다.
함수 설명 | Oracle | Microsoft SQL Server |
---|---|---|
숫자를 문자로 | TO_CHAR | CONVERT |
문자를 숫자로 | TO_NUMBER | CONVERT |
날짜를 문자로 | TO_CHAR | CONVERT |
문자를 날짜로 | TO_DATE | CONVERT |
16진수를 이진수로 | HEX_TO_RAW | CONVERT |
이진수를 16진수로 | RAW_TO_HEX | CONVERT |
기타 행 수준 함수
다음은 Oracle에서 지원하는 기타 행 수준 함수 및 그에 상응하는 Microsoft SQL Server의 함수를 정리한 표입니다.
함수 설명 | Oracle | Microsoft SQL Server |
---|---|---|
NULL이 아닌 첫째 식 반환 | DECODE | COALESCE |
현재 시퀀스 값 | CURRVAL | 해당 없음 |
다음 시퀀스 값 | NEXTVAL | 해당 없음 |
식1 = 식2일 때 NULL 반환 | DECODE | NULLIF |
사용자의 로그인 ID 번호 | UID | SUSER_ID |
사용자의 로그인 이름 | USER | SUSER_NAME |
사용자의 데이터베이스 ID 번호 | UID | USER_ID |
사용자의 데이터베이스 이름 | USER | USER_NAME |
현재 사용자 | CURRENT_USER | CURRENT_USER |
사용자 환경(감사 추적) | USERENV | 해당 없음 |
CONNECT BY 절의 수준 | LEVEL | 해당 없음 |
집계 함수
다음은 Oracle에서 지원하는 집계 함수 및 그에 상응하는 Microsoft SQL Server의 함수를 정리한 표입니다.
함수 설명 | Oracle | Microsoft SQL Server |
---|---|---|
평균 | AVG | AVG |
개수 | COUNT | COUNT |
최대값 | MAX | MAX |
최소값 | MIN | MIN |
표준 편차 | STDDEV | STDEV 또는 STDEVP |
합계 | SUM | SUM |
분산 | VARIANCE | VAR 또는 VARP |
조건부 테스트
Oracle DECODE 문과 Microsoft SQL Server CASE 식 모두 조건부 테스트를 수행합니다. 테스트_값의 값이 그 다음에 오는 어떤 식과 일치하면 관련 값이 반환됩니다. 일치하지 않으면 기본_값이 반환됩니다. 기본_값이 지정되어 있지 않고 일치하는 식이 없으면 DECODE와 CASE는 NULL을 반환합니다. 다음 표는 변환된 DECODE 명령 예제를 비롯하여 구문을 정리한 것입니다.
Oracle | Microsoft SQL Server |
---|---|
DECODE (테스트_값, 식1, 값1 [[,식2, 값2] [U]] [,기본_값] ) CREATE VIEW STUDENT_ADMIN.STUDENT_GPA (SSN, GPA) AS SELECT SSN, ROUND(AVG(DECODE(grade ,'A', 4 ,'A+', 4.3 ,'A-', 3.7 ,'B', 3 ,'B+', 3.3 ,'B-', 2.7 ,'C', 2 ,'C+', 2.3 ,'C-', 1.7 ,'D', 1 ,'D+', 1.3 ,'D-', 0.7 ,0)),2) FROM STUDENT_ADMIN.GRADE GROUP BY SSN |
CASE 입력_식 WHEN when_식 THEN 결과_식 [[WHEN when_식 THEN 결과_식] [...]] [ELSE else_결과_식] END CREATE VIEW STUDENT_ADMIN.STUDENT_GPA (SSN, GPA) AS SELECT SSN, ROUND(AVG(CASE grade WHEN 'A' THEN 4 WHEN 'A+' THEN 4.3 WHEN 'A-' THEN 3.7 WHEN 'B' THEN 3 WHEN 'B+' THEN 3.3 WHEN 'B-' THEN 2.7 WHEN 'C' THEN 2 WHEN 'C+' THEN 2.3 WHEN 'C-' THEN 1.7 WHEN 'D' THEN 1 WHEN 'D+' THEN 1.3 WHEN 'D-' THEN 0.7 ELSE 0 END),2) FROM STUDENT_ADMIN.GRADE GROUP BY SSN |
CASE 식은 SELECT 문을 사용하여 부울 테스트를 수행할 수 있도록 지원합니다. DECODE 명령은 이를 허용하지 않습니다. CASE 식에 대한 자세한 내용은 SQL Server 온라인 설명서를 참조하십시오.
값을 다른 데이터 형식으로 변환
Microsoft SQL Server의 CONVERT 및 CAST 함수는 다목적 변환 함수입니다. 이들은 비슷한 기능을 제공하며 식을 다른 데이터 형식으로 변환하고 다양한 특수 날짜 형식을 지원합니다.
- CAST(식 AS 데이터_형식)
- CONVERT (데이터 형식[(길이)], 식 [, 스타일])
CAST는 SQL-92 표준 함수입니다. 이들 함수는 Oracle의 TO_CHAR, TO_NUMBER, TO_DATE, HEXTORAW 및 RAWTOHEX 함수와 같은 작업을 수행합니다.
데이터 형식은 식을 변환할 모든 시스템 데이터 형식입니다. 사용자 정의 데이터 형식은 사용할 수 없습니다. 길이 매개 변수는 선택 사항이며 char, varchar, binary 및 varbinary 데이터 형식과 함께 사용됩니다. 허용되는 최대 길이는 8000입니다.
변환 | Oracle | Microsoft SQL Server |
---|---|---|
문자를 숫자로 | TO_NUMBER('10') | CONVERT(numeric, '10') |
숫자를 문자로 | TO_CHAR(10) | CONVERT(char, 10) |
문자를 날짜로 | TO_DATE('04-JUL-97') TO_DATE('04-JUL-1997', 'dd-mon-yyyy') TO_DATE('July 4, 1997', 'Month dd, yyyy') |
CONVERT(datetime, '04-JUL-97') CONVERT(datetime, '04-JUL-1997') CONVERT(datetime, 'July 4, 1997') |
날짜를 문자로 | TO_CHAR(sysdate) TO_CHAR(sysdate, 'dd mon yyyy') TO_CHAR(sysdate, 'mm/dd/yyyy') |
CONVERT(char, GETDATE()) CONVERT(char, GETDATE(), 106) CONVERT(char, GETDATE(), 101) |
16진수를 이진수로 | HEXTORAW('1F') | CONVERT(binary, '1F') |
이진수를 16진수로 | RAWTOHEX (binary_column) |
CONVERT(char, 이진_열) |
문자열이 어떻게 날짜로 변환되는지 눈여겨 보십시오. Oracle의 기본 날짜 형식 모델은 "DD-MON-YY"입니다. 다른 형식을 사용하는 경우 적절한 날짜 형식 모델을 제공해야 합니다. CONVERT 함수는 형식 모델을 필요로 하지 않고 자동으로 표준 날짜 형식을 변환합니다.
날짜를 문자열로 변환하면 CONVERT 함수의 기본 출력은 "dd mon yyyy hh:mm:ss:mmm(24h)"이 됩니다. 숫자 스타일 코드는 출력 형식을 다른 종류의 데이터 형식 모델로 지정하는 데 사용됩니다. CONVERT 함수에 대한 자세한 내용은 SQL Server 온라인 설명서를 참조하십시오.
아래 표는 Microsoft SQL Server 날짜의 기본 출력을 정리한 것입니다.
세기 사용 안함 | 세기 사용 | 표준 | 출력 |
---|---|---|---|
- | 0 또는 100 (*) | 기본값 | mon dd yyyy hh:miAM(또는 PM) |
1 | 101 | 미국 | mm/dd/yy |
2 | 102 | ANSI | yy.mm.dd |
3 | 103 | 영국/프랑스 | dd/mm/yy |
4 | 104 | 독일 | dd.mm.yy |
5 | 105 | 이탈리아 | dd-mm-yy |
6 | 106 | - | dd mon yy |
7 | 107 | - | mon dd, yy |
8 | 108 | - | hh:mm:ss |
- | 9 또는 109 (*) | 기본 밀리초 | mon dd yyyy hh:mi:ss:mmm(AM 또는 PM) |
10 | 110 | 미국 | mm-dd-yy |
11 | 111 | 일본 | yy/mm/dd |
12 | 112 | ISO | yymmdd |
- | 13 또는 113 (*) | 유럽 기본값 | dd mon yyyy hh:mm:ss:mmm(24h) |
14 | 114 | - | hh:mi:ss:mmm(24h) |
사용자 정의 함수
Oracle PL/SQL 함수는 Oracle SQL 문에 사용할 수 있습니다. Microsoft SQL Server에서는 보통 다른 방법을 사용하여 이 기능을 얻을 수 있습니다.
아래 예제에서는 Oracle의 사용자 정의 함수 GET_SUM_MAJOR를 사용하여 학생들이 지불하는 수업료의 합계를 냅니다. SQL Server에서는 쿼리를 테이블로 사용하여 이렇게 할 수 있습니다.
Oracle | Microsoft SQL Server |
---|---|
SELECT SSN, FNAME, LNAME, ) TUITION_PAID, TUITION_PAID/GET_SUM_MAJOR(MAJOR) AS PERCENT_MAJOR FROM STUDENT_ADMIN.STUDENT |
SELECT SSN, FNAME, LNAME, TUITION_PAID, TUITION_PAID/SUM_MAJOR AS PERCENT_MAJOR FROM STUDENT_ADMIN.STUDENT, (SELECT MAJOR, SUM(TUITION_PAID) SUM_MAJOR FROM STUDENT_ADMIN.STUDENT GROUP BY MAJOR) SUM_STUDENT WHERE STUDENT.MAJOR = SUM_STUDENT.MAJOR |
CREATE OR REPLACE FUNCTION GET_SUM_MAJOR (INMAJOR VARCHAR2) RETURN NUMBER AS SUM_PAID NUMBER; BEGIN SELECT SUM(TUITION_PAID) INTO SUM_PAID FROM STUDENT_ADMIN.STUDENT WHERE MAJOR = INMAJOR; RETURN(SUM_PAID); END GET_SUM_MAJOR; |
CREATE FUNCTION 구문이 필요하지 않습니다. CREATE PROCEDURE 구문을 사용하십시오. |
Oracle과 Microsoft SQL Server의 비교 연산자는 거의 같습니다.
연산자 | Oracle | Microsoft SQL Server |
---|---|---|
같음 | (=) | (=) |
큼 | (>) | (>) |
작음 | (<) | (<) |
크거나 같음 | (>=) | (>=) |
작거나 같음 | (<=) | (<=) |
같지 않음 | (!=, <>, ^=) | (!=, <>, ^=) |
크지 않음, 작지 않음 | 해당 없음 | !> , !< |
집합의 구성원에 있음 | IN | IN |
집합의 구성원에 없음 | NOT IN | NOT IN |
집합에 있는 임의의 값 | ANY, SOME | ANY, SOME |
집합에 있는 모든 값 |
!= ALL, <> ALL, < ALL, > ALL, <= ALL, >= ALL, != SOME, <> SOME, < SOME, > SOME, <= SOME, >= SOME |
!= ALL, <> ALL, < ALL, > ALL, <= ALL, >= ALL, != SOME, <> SOME, < SOME, > SOME, <= SOME, >= SOME |
패턴과 같음 | LIKE | LIKE |
패턴과 같지 않음 | NOT LIKE | NOT LIKE |
x와 y 사이의 값 | BETWEEN x AND y | BETWEEN x AND y |
사이에 있지 않은 값 | NOT BETWEEN | NOT BETWEEN |
값이 있음 | EXISTS | EXISTS |
값이 없음 | NOT EXISTS | NOT EXISTS |
값이 NULL이거나 NULL이 아님 | IS NULL, IS NOT NULL | 같습니다. 이전 버전과의 호환성을 위해 = NULL, != NULL도 사용할 수 있지만 권장되지 않습니다. |
패턴 일치
SQL Server의 LIKE 키워드는 Oracle은 지원하지 않는 유용한 와일드카드 검색 옵션을 제공합니다. SQL Server는 양쪽 RDBMS에 공통된 % 및 _ 와일드카드 문자를 지원함은 물론 [ ] 및 [^] 문자도 지원합니다.
[ ] 문자 집합은 지정한 범위에서 단일 문자를 검색하는 데 사용합니다. 예를 들어, 단일 문자 위치에서 a부터 f까지의 문자를 검색하는 경우 LIKE '[a-f]' 또는 LIKE '[abcdef]'처럼 지정할 수 있습니다. 아래 표를 통해 이러한 추가 와일드카드 문자의 유용함을 확인할 수 있습니다.
Oracle | Microsoft SQL Server |
---|---|
SELECT * FROM STUDENT_ADMIN.STUDENT WHERE LNAME LIKE 'A%' OR LNAME LIKE 'B%' OR LNAME LIKE 'C%' |
SELECT * FROM STUDENT_ADMIN.STUDENT WHERE LNAME LIKE '[ABC]%' |
[^] 와일드카드 문자 집합은 지정된 범위에 NOT 문자를 지정할 때 사용합니다. 예를 들어, a부터 f까지를 제외한 모든 문자가 허용될 때 LIKE '[^a - f]' 또는 LIKE '[^abcdef]'를 사용합니다.
# 출처
'Database' 카테고리의 다른 글
noSQL|noSQL이란? (0) | 2011.08.01 |
---|---|
데이터베이스|효율적인 채번 방식을 적용한 성능향상 (0) | 2011.06.17 |
ERWin|Oracle, MS-SQL용 주석(Comment) 생성 및 순서 맞추기 (4) | 2010.09.03 |
DB|25가지 SQL작성법 (튜닝 기초) (0) | 2010.08.24 |
게시판|페이징 쿼리 (MS-SQL, Oracle) (0) | 2010.08.11 |