다른건 다 괜찮은데 정렬이 정말 미칀놈이라 생각나는데로 먼저 기록해보려합니다..
다른것도 차차 기록해볼게요
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 |
댓글