본문 바로가기
전공공부/데이터베이스

오라클 <> MSSQL 마이그레이션 차이점을 정리해보려 합니다 .. - 1 - (ORDER BY 정렬편)

by tiit 2023. 12. 15.
반응형

다른건 다 괜찮은데 정렬이 정말 미칀놈이라 생각나는데로  먼저 기록해보려합니다.. 

다른것도 차차 기록해볼게요 

 

1. 오라클이랑 MSSQL 기본 정렬은 다르다

오라클 쿼리를 MSSQL 로 바꾸면서 좀 생각지도 못했던게 기본정렬이 다를 것이라는 생각을 안해서 둘이 정렬 맞추려고 시간 좀 썼었거든요.

예를 들어 ORDER BY 절이 없는 SELECT 문은 아무리해도 같은 정렬이 나올 수 가 없더라고요.. 

왜냐..? 어느 기준으로 정렬되는지 모르기 때문에 라고 저는 찾았습니다 .. 

그니깐 정렬이 필요하면 ORDER BY 절을 써서 정렬하는 것으로 .. 

 

2. 오라클 NULL 뒤로 정렬 / MSSQL NULL 앞으로 정렬

이건 아직까지도 어떻게 해야할지 잘 못찾았는데요 .. 

오라클은 NULL 기본으로 뒤로 정렬이라 MSSQL 로 바꿀때 NULL 뒤로 정렬하는 법은 

-컬럼명 DESC 이렇게 찾았는데 이건 컬럼이 숫자일 경우만 적용됩니다. 문자는 안돼요

문자에서 뒤로 정렬하는 법은 아직 못찾았습니다 .. 후 ,,,,

 

3-1. 오라클 ROWNUM / MSSQL ROW_NUMBER() OVER(ORDER BY (SELECT 1))

이게 진짜 짜증나는 놈 입니다.

오라클은 그냥 ROWNUM 만 적어도 되는데 MSSQL 에서는 저렇게 길게 써줘야돼요 .. 후 ..

ROWNUM 할 때 무조건 ORDER BY 가 들어가줘야 하는 끔직한 상황.. 

이것 때메 애 먹었는데 SELECT 1 해주면 정렬없이 ROWNUM 만 가져옵니다. 

 

3-2 MSSQL ROW_NUMBER 사용시 ORDER BY는 꼭 OVER 절안에 써줘야 적용됩니다. 

예를 들어 

SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS RNUM,

* FROM 

ORDER BY 컬럼명 

--> 이거 당연히 안됩니다. 이미 앞에서 오더 바이 해줬으니깐요 

--> 그리고 이렇게 쓰면 에러 납니다. 

SELECT TOP 100 PERCENT 붙여줘야 하는데 어차피 정렬안되니깐 의미없는거에요 ;; ㅋ 

저는 이걸 아주 늦게 깨달고 얼마나 많이 쿼리를 재수정 했던지 흑흑..

 

SELECT ROW_NUMBER() OVER(ORDER BY 컬럼명) AS RNUM,

* FROM 

--> 이게 맞는 겁니다 ^^ 

 

4. MSSQL 서브쿼리에서 정렬된 SELECT 문 사용시 유의할 점 

이거는 정말 할 말이 많아서 일단 여기까지만 적겠습니다..

 

그럼 20000

 

반응형

'전공공부 > 데이터베이스' 카테고리의 다른 글

57.정렬(Sort)  (1) 2020.02.22
48. 자료 구조의 분류  (0) 2020.02.22
60. 해싱(Hashing)  (0) 2020.02.19
트리 전위, 중위, 후위 순회  (0) 2020.02.15
54. 트리(Tree)  (0) 2020.02.13

댓글