DB

DB 정렬 ORDER BY 관련

조셉LEE 2024. 3. 7. 09:00
728x90
반응형

DB 조회 구문을 만들때 ORDER BY를 사용하다가 아무렇지 않게 실수하는 경우가 있다. 
아래 두구문의 같은 값인것 같지만 결과는 다르게 나온다. 왜 그럴까? 그건 바로 DATA 타입 때문이다. 
위에 구문은 SEQ가 문자형이고 아래는 숫자형이다.
쿼리에 자신있다고 하다가 결과도 보지 않고 담당자와 이야기 하다가 결과가 이상한데요 라는 부끄러운 결과를 볼수 있다. 자만하지 말고 자신이 만든 쿼리를 항상 테스트 하는 습관을 기르도록 하자

예시1)
WITH TMPTABLE AS  

SELECT '1' AS   SEQ UNION ALL SELECT '2' AS  SEQ UNION ALL  
SELECT '10' AS   SEQ UNION ALL SELECT '11' AS  SEQ 

SELECT 
  FROM TMPTABLE 
 OREDER BY SEQ 

결과1)
1
10
11
2
  
예시2)
WITH TMPTABLE AS   
 
SELECT 1 AS   SEQ UNION ALL SELECT 2 AS  SEQ UNION ALL  
SELECT 10 AS   SEQ UNION ALL SELECT 11 AS  SEQ  
 
SELECT  
  FROM TMPTABLE  
 OREDER BY SEQ  
  
결과2)  
1
2
10
11
  
  
조회되는 DATA 숫자를 순서대로 정렬하고자 한다면 숫자로 바꾸거나 ORDER BY 절에 컬럼을 숫자형으로 바꾸는걸 추천한다.  누구나 알고 있으면서도 가장 많이 하는 실수중에 하나이다. 

반응형
LIST

'DB' 카테고리의 다른 글

[MS-SQL] 고정문자열 표현하기 ('01')  (0) 2024.03.08
오라클 다중 IN MSSQL에서는 EXISTS로 해보자  (0) 2024.03.07
WHERE 조건에 CASE문 처리  (0) 2024.03.07
[MSSQL] STUFF() / FOR XML PATH()  (0) 2024.03.05
오라클 HINT  (1) 2024.03.05