2017-09-28 13 views
2

을 던지는 쿼리에서 삭제 :여러 여건 나는 다음과 같은 테이블 설정을 가지고 # 245 변환 유형 오류

Parameters 
╔═══╦═════════╦════════╗ 
║ID ║ Name ║ Value ║ 
╠═══╬═════════╬════════╣ 
║ 7 ║ first ║ 0  ║ 
║ 7 ║ second ║ -1  ║ 
║ 7 ║ third ║ -1  ║ 
╚═══╩═════════╩════════╝ 

그것은 더 많은 행을 포함,하지만 난 단지 위에 나열된 것들을 삭제합니다. 나는이 작업을 수행하려면 아래의 다음 쿼리를 만들었습니다,하지만 당신은 이름에 대한 IN 상태로 제 3 값을 추가 할 때 내가 얻을 :

ErrorNumber 245 - "int 데이터 형식에 VARCHAR 값을 변환 할 때 변환에 실패했습니다. "

DELETE FROM Parameters 
    WHERE 
     ID = 7 AND 
     Name IN ('first', 'second', 'third') AND 
     Value IN (0, -1) 

나는 IN 조건 그것을 잘 실행 1 또는 2 명을 3 개 개의 이름 중 하나를 삭제하지만 세 번째 행을해야 할 경우

같은 쿼리에서 삭제합니다. 이 작업을 수행하려면 어떻게해야합니까?

+0

귀하의 질문에 +1 – Sami

답변

2

분명히 id 또는 value은 문자열입니다. SQL Server는 사용할 형식을 결정해야합니다. 문자열을 숫자와 비교하면 숫자가 사용됩니다. 다른 행에 잘못된 번호가 있으면 유형 변환 오류가 발생합니다.

비교를 위해 적절한 유형을 사용해야합니다. 내 추측이 있다면, 그것은 value 것 :

DELETE FROM Parameters 
WHERE 
    ID = 7 AND 
    Name IN ('first', 'second', 'third') AND 
    Value IN ('0', '-1'); 

당신 같은 7로 숫자 상수 주위에 작은 따옴표를 넣을 수 있습니다. 잘못 사용하는 유형이 나쁜 코딩 습관이기 때문에 나는 그것을 권장하지 않습니다.

+0

내 추측이 될 것입니다. – Kevin

+0

@Gordon이 맞았습니다. 가치 란이었습니다. 빠른 응답을 해주셔서 너무 감사드립니다! 옵션을 사용할 수있게 되 자마자 답변을 수락하겠습니다. –