본문 바로가기
DataBase

[MSSQL] 한글/숫자/영문 글자수가 아닌 byte 단위로 문자열 자르기

by 따봉이 2020. 11. 9.
728x90
반응형

테이블의 데이터 형식은 정해져 있는데 정해진 용량보다 문자가 클 경우 

잘라서 INSERT 해야 한다. 이때 문자 갯수 기준으로 하면 한글과 숫자/영문이 Byte가 다르기 때문에

딱맞게 자를 수가 없다. 

 

이때, 

쿼리상에서 String 형식의 값을 문자열로 한글자 자르는 것이 아니라

한글(2byte), 영문/숫자(1byte)로 Byte 단위로 잘라서 INSERT 시킨다.

 

INSERT INTO 주문테이블 (상품명)

SELECT  CASE WHEN DATALENGTH(상품명) > 200

                   THEN SUBSTRING(CONVERT(TEXT, 상품명), 1, 198) + '...'

            ELSE 상품명 END AS 상품명

FROM 상품목록 

 

 

※포인트 

DATALENGTH   와 CONVERT(TEXT, 상품명)

728x90
반응형

댓글