안녕하세요 ~~
데이터 입력 시 필드 크기보다 초과된 부분을 잘라서 입력하고 싶습니다.
이것저것 찾아봤는데.. 예를 들어 필드 크기가 10byte라면
binary로 convert해서 10byte 크기로 자른 다음 다시 varchar(10) 이렇게 변경하더라구요.
----------------------------------------------------
declare @str varchar(100) = '응123선식아소고기또무러가자'
select substring(@str, 1, 6)
--응123선식
select cast(substring(cast(@str as binary), 1, 6) as varchar(100))
--응123
> http://www.sqler.com/bSQLQA/540802 (참고 페이지)
-----------------------------------------------
그런데 위 방법말고 그냥 아래처럼 바로 하면 문제가 생기나요?
datalength로 확인했을때는 10byte로 잘리는데여~
혹시 글자가 깨진다거나 할 수 있나여?
select cast(@str as varchar(10))
select datalength(cast(@str as varchar(10)))
가르침 부탁드려요 ~~
Comment 4
-
건우아빠
2013.03.07 14:46
-
우갸우갸v
2013.03.07 14:53
좋은 정보 감사드립니다.
많은 도움이 되었습니다. :)
-
쓸만한게없네(윤선식)
2013.03.07 15:19
어디선가... 내 이름이... ㅡㅡ
-
불타는불쥐[김경진]
2013.03.07 15:40
소고기 먹으러 ㅎㅎㅎ
참고하신 질문의 내용은 우갸우갸v님하고 약간의 차이가 있습니다.
짤릴때 깨지는지 여부를 확인 하는 방법이 있는지를 알고 싶은 내용입니다.
select cast(substring(cast(@str as binary), 1, 6) as varchar(100)) 이런식 으로 했을때는 짤리는 값도 같이 저장이 된다는 의미이고
이때 짤려서 화면에서 보여줄때는 깨진것은 안보여준다는 의미입니다.
select cast(@str as varchar(10))
select datalength(cast(@str as varchar(10))) 하시면 원하시는 형태의 글자단위로 잘려서 저장되어 깨지는 현상은 없습니다.