티스토리 뷰

반응형

 업무를 보다가, 뭐가 잘 안된다는 연락을 받고 확인을 해봤습니다.

 ADDRESS 테이블에서 province로 groupby를 한 결과 입니다.



아래 쿼리와 같이 province로 group by를 쿼리로 하게 되면 총 7개의 그룹이 생깁니다.

그러나 실제 프로그램에서는 8개의 그룹이 생긴다고 해서.. 도대체 왜???? 이런 생각이 들었고 소스 코드를 보고 디버깅을 해봤습니다.


  


결과를 보니,.. 8개가 딱..... 그리고 확인을 해보니, province-3Province-3 이렇게.. 두개로 나뉘어 있었습니다.

아... ㅎㅎㅎ 위에는 자바 Stream의 Groupingby를 사용하여 grouping한 결과 입니다.

쿼리 결과물을 자세히 보면.. 대소문자가 막.. 섞여 있습니다.

즉 province-3과 Province-3이 MSSQL에서는 함께 group by 되었던 것 입니다. 하하하..

나름 찾아보니.. MSSQL은 오라클과 다르게 기본적으로 대소문자를 구분하지 않는다고 하네요... ㅠㅠ 뭐 이제라도 알았으니 된거겠죠??

대소문자를 구분하는 쿼리입니다.

select PROVINCE COLLATE Korean_Wansung_CS_AS,count(*) from ADDRESS
group by PROVINCE COLLATE Korean_Wansung_CS_AS;



아주 잘 구분하여.. 그룹을 구분해 주네요...

진작 알았더라면... ORACLE만 사용하다가 실무에서 MSSQL을 사용하려니 어렵네요 ㅠㅠ


COLLATION Korean_Wansung_CS_AS  

->  CI : 대소문자 구분 안함,  CS : 대소문자 구분

->  AI : 액센트 구분 안함, AS : 액센트 구분

이런식으로 Korean_Wansung 뒤에 설정을 할 수 있습니다. Korean_Wansung은 언어라고 하네요.


SELECT * FROM ADDRESS WHERE PROVINCE COLLATE Korean_Wansung_CS_AS  ='province-3';

이런식으로도 활용할 수 있을 것 같습니다. 


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함