본문 바로가기

Program/DB

sqlserver 문자열이나 이진 데이터는 잘립니다. LEN / DATALENGTH

기본중에 기본일거 같지만 여태까지 몰랐던 내용....


테이블에 정의한 컬럼길이 비교는 LEN이 아니라 DATALENGTH로 해야 한다는것을....


에러가 난다고 해서 보니 테이블 컬럼은 VARCHAR(100), 입력되는 문자열의 길이를 LEN 해보니 62..

대체 왜 에러가 나는걸까 이리 보고 저리보고 한참 찾아보고 고민후에 문자열의 길이를 DATALENGTH로 해보니 102가 나온다 -_-;;


한글은 2바이트로 계산되는것을 잊고 살았던것....


기존에는 문자열 입력 컬럼을 여유있게 잡아서 경험해보지 못한 에러였다.


이렇게 하나 또 알아가게 되는것이겠지..




예제(테이블 생성하고 INSERT 하면 에러가 남)


CREATE TABLE dbo.T1

(

memo VARCHAR(100)

)


INSERT INTO dbo.T1 

VALUES ('3/15 물류_ 차량배송_일반발주(모니터)와 함께 배송요망/제품 꼭 올려주셔야 합니다.(사무실에 사람이 없음.)')


SELECT LEN('3/15 물류_ 차량배송_일반발주(모니터)와 함께 배송요망/제품 꼭 올려주셔야 합니다.(사무실에 사람이 없음.)')

SELECT DATALENGTH('3/15 물류_ 차량배송_일반발주(모니터)와 함께 배송요망/제품 꼭 올려주셔야 합니다.(사무실에 사람이 없음.)')



PS.컬럼이 NVARCHAR(100)이면 문제가 안생긴다;;