22.03.31
오랜만에 글을 씁니다. 정보처리기사랑 친구랑 만드는 프로젝트, 기업인턴을 병행하다보니 블로그 관리를 못했습니다.
최근 정말 바빴습니다.
오늘은 기업인턴 중 db에서 암호화된 값을 convert로 가져오는 과정에서 발생한 오류를 정리해보겠습니다.
위 사진처럼 값이 다 깨져서 왔습니다.. Controller에서 찍어봤는데도 깨지더라구요
그래서 인코딩 문제이겠거니 했습니다
직접 쿼리내에서 인코딩 방식을 변경하려했지만
(값을 binary로 바꿔준 뒤 다시 utf8로 바꾸는 방법)
성능이 너무 느려진다길래 실서버에서 장애 생길까봐 다른 방안을 찾기로 했습니다.
(CONVERT도 느림..)
암호화된 값을 CONVERT(VARCHAR(MAX), DecryptbyKey) 로 가져오고 있길래
CONVERT, DecryptbyKey 에 대해서 공부하다가
"NVARCHAR로 한번 바꿔볼까?" 해서 바꿔봤더니...
해결..
왜 해결되는지 알고 싶어서 이것 저것 링크타고 찾아봤습니다.
★ VARCHAR(MAX)의 단점 및 SQL Server의 NVARCHAR
[MSSQL] VARCHAR(MAX) vs VARCHAR(N) / VARCHAR(MAX) 의 단점
VARCHAR(MAX) 와 NVARCHAR(MAX) 의 단점 VARCHAR 와 NVARCHAR 는 유니코드 라는 점에서 다르기 때문에 VARCHAR 로 설명하겠습니다. VARCHAR(N) 컬럼에 데이터를 저장할 때에는 물리적으로 같은 방식으로 저장됩니..
mozi.tistory.com
https://techblog.woowahan.com/2605/
SQL Server 에게 String 이란? (NVARCHAR 인가 VARCHAR 인가) | 우아한형제들 기술블로그
{{item.name}} SQL Server JDBC Driver 를 사용하면서 배운, 그리고 주의해야 할 특징 안녕하세요. 비즈상품개발팀에서 광고시스템을 개발하고 있는 김승영입니다. 현재 광고시스템의 일부분이 Spring Boot /
techblog.woowahan.com
- SQL Server JDBC Driver 는 String type 의 pamameter 를 기본적으로 NVARCHAR 로 매핑한다는 사실을 반드시 기억하고 사용하자
- 그렇기 때문에, String type 의 parameter 를 기본 VARCHAR 로 매핑하고 싶다면 또는 해야한다면, JDBC URL 에 sendStringParametersAsUnicode=false 를 추가하자
- Hibernate / JPA 기반이라면 NVARCHAR 컬럼을 매핑한 필드에 @Nationalized를 사용하자
SQL Server JDBC Driver 는 String type 의 pamameter 를 기본적으로 NVARCHAR 로 매핑한다는 사실을 배웠습니다.