2016-12-01 1 views
-3

메시지 245, 수준 16, 상태 1 나는이UPDATE 테이블 SET의 COL = CONVERT (INT, COL)

UPDATE table 
SET col = CONVERT(int, col) 

을 시도하고 그리고 난

을 얻고, 2 호선 변환 할 때 실패 varchar 값 '106/1'을 데이터 유형 int로 변환합니다.

+1

오류에 대해 혼란 스럽습니다. ssage. 당신은'int /'가 아닌'106/1'이라는 값을 테이블에 가지고 있습니다 ... 그것은 문자 그대로 오류 메시지에서 말합니다. 귀하의 데이터를 확인하십시오 ... – Siyual

+1

그냥 호기심. [106 나누기] 또는 [106] 또는 [NULL]을 기대하십니까? –

+1

나는 당신에게 이것에 대한 답을 줬습니다. http://stackoverflow.com/questions/40870435/i-have-column-with-decimals-and-i-want-it-to-make-it-real-number -please-see-belo 'col'을 내가 작성한 case 문으로 바꾸면 작동 할 것이다. –

답변

0

메서드에 전달할 인수의 형식을 확인하면 메서드에서 Int 형식의 인수를 요청하지만 해당 예외가 throw되는 이유는 varchar입니다. (NULL을 한 번

+0

안녕하세요. 그것은 당신의 대답을 보여주는 몇 가지 코드를 게시하는 데 도움이됩니다. –

3

2012+ 경우 TRY_CONVERT()를 사용할 수 있습니다 ... 무효가 반환 int를주는

UPDATE table SET col = TRY_CONVERT(int, col) 

그렇지 않은 경우 2012+

UPDATE table SET col = case when isnumeric(col+'.01')=0 then null else CONVERT(int,col) end 

편집을 시도 Shnugo가 isnumeric() 트릭을 어젯밤에 배웠습니다)

+0

크레딧을위한 Thx :-) [어젯밤 자신의 isnumeric() 트릭을 배웠습니다 : -)] (@stackoverflow.com/q/40898509/5089204) – Shnugo

+0

@ Shnugo 나는 명예로운 사람이 되려고 노력합니다. 조금 부끄러워서 링크를 추가 할 생각을하지 못했습니다. –

관련 문제