그러냐

MS-SQL vs. ORACLE 함수 비교 본문

mssql

MS-SQL vs. ORACLE 함수 비교

관절분리 2016. 1. 27. 17:52
반응형

종종 개발자로서 프로젝트를 할 때면 우리는 하나의 데이터베이스를 사용한다. 6개월에서 1년정도 오라클을 사용하다가 다시 MSSQL을 사용하려면, 가장 곤란한것이 SQL 함수가 헷갈리는 것이다.

나만 그런가?
아마..나랑 비슷한 사람들도 있으리라 생각한다. 가령 오라클에서 SUBSTR이 MSSQL에서는 뭐였더라? 이런 사람들에게 조금은 유용하리라 생각된다.


문자열 함수

Function
Oracle
SQL Server

Convert character to ASCII
ASCII
ASCII

String concatenate
CONCAT
(expression + expression)

Convert ASCII to character
CHR
CHAR

Return starting point of character in character string (from left)
INSTR
CHARINDEX

Convert characters to lowercase
LOWER
LOWER

Convert characters to uppercase
UPPER
UPPER

Pad left side of character string
LPAD
N/A

Remove leading blank spaces
LTRIM
LTRIM

Remove trailing blank spaces
RTRIM
RTRIM

Starting point of pattern in character string
INSTR
PATINDEX

Repeat character string multiple times
RPAD
REPLICATE

Phonetic representation of character string
SOUNDEX
SOUNDEX

String of repeated spaces
RPAD
SPACE

Character data converted from numeric data
TO_CHAR
STR

Substring
SUBSTR
SUBSTRING

Replace characters
REPLACE
STUFF

Capitalize first letter of each word in string
INITCAP
N/A

Translate character string
TRANSLATE
N/A

Length of character string
LENGTH
DATALENGTH or LEN

Greatest character string in list
GREATEST
N/A

Least character string in list
LEAST
N/A

Convert string if NULL
NVL
ISNULL




Date 함수

Function
Oracle
SQL Server

Date addition
(use +)
DATEADD

Date subtraction
(use -)
DATEDIFF

Last day of month
LAST_DAY
N/A

Time zone conversion
NEW_TIME
N/A

First weekday after date
NEXT_DAY
N/A

Convert date to string
TO_CHAR
DATENAME

Convert date to number
TO_NUMBER(TO_CHAR())
DATEPART

Convert string to date
TO_DATE
CAST

Get current date and time
SYSDATE
GETDATE()


수학함수

Function
Oracle
SQL Server

Absolute value
ABS
ABS

Arc cosine
ACOS
ACOS

Arc sine
ASIN
ASIN

Arc tangent of n
ATAN
ATAN

Arc tangent of n and m
ATAN2
ATN2

Smallest integer >= value
CEIL
CEILING

Cosine
COS
COS

Hyperbolic cosine
COSH
COT

Exponential value
EXP
EXP

Round down to nearest integer
FLOOR
FLOOR

Natural logarithm
LN
LOG

Logarithm, any base
LOG(N)
N/A

Logarithm, base 10
LOG(10)
LOG10

Modulus (remainder)
MOD
USE MODULO (%) OPERATOR

Power
POWER
POWER

Random number
N/A
RAND

Round
ROUND
ROUND

Sign of number
SIGN
SIGN

Sine
SIN
SIN

Hyperbolic sine
SINH
N/A

Square root
SQRT
SQRT

Tangent
TAN
TAN

Hyperbolic tangent
TANH
N/A

Truncate
TRUNC
N/A

Highest number in list
GREATEST
N/A

Lowest number in list
LEAST
N/A

Convert number if NULL
NVL
ISNULL





오라클과 MSSQL서버의 제약조건..들...
내가 이거 몰라서 무지 고생한 적있다.
하나의 쿼리문에서 나타날수 있는 컬럼수는 1024개 밖에 안된다. 오라클은 1000개 밖에 안된다. 쿼리문에 1000개나 되는 컬럼을 쓸 일이 있을까? 의심스럽겠지만...통계쪽 개발하도보면 그런일도 생긴다.
얼마전에 웹에서 사용자의 선택조건에 의해 동적으로 SQL문을 생성하며 통계 결과를 생성하는 프로젝트를 했었다. 선택조건의 경우의 수가 1000여가지 이상이므로, 각 경우의 수마다 쿼리문을 작성하거나, 프로시저를 개발하는건 엄두도 못냈다.
열심히 프로그램적으로 쿼리문 만들어 내도록 코딩했다.

잘 돌아갔다. 그러다 문득 특정조건에서만 에러가 났다. 그거 이유 찾느라 정말 고생했다.
이유는 특정 선택조건에 따라 SELECT절의 컬럼수가 1000개가 넘더라.. 전세계 국가별 통계를 내던 중이었다...헉~ 그거 다시 다 수정하고, 업무협의하느라...



나 같은 실수를 하지 마시길 바라면..아래 표는 한번쯤 읽어보시길 바란다.


Feature
SQL Server 2000
Oracle 9i Database

database name length
128
8

column name length
128
30

index name length
128
30

table name length
128
30

view name length
128
30

stored procedure name length
128
30

index length
900
749

max columns per index
16
32

max char() size
8000
2000

max varchar() size
8000
4000

max columns per table
1024
1000

max table row length
8036
255000

max query size
16777216
16777216

recursive subqueries
40
64

constant string size in SELECT
16777207
4000

constant string size in WHERE
8000
4000













출처명 : http://www.webucator.com/resources/sql/reference.html

반응형