본문 바로가기

DataBase

SQL Operand type clash: varbinary is incompatible with ntext varbinary가 ntext와 호환되지 않습니다 해결 COALESCE , CONVERT

반응형


이 쿼리에서 INSERT INTO 문을 사용하여 특정 테이블에 데이터를 삽입하려고 합니다. 그러나 예외가 발생한 이유는 varbinary와 ntext 간에 피연산자 유형이 호환되지 않기 때문입니다.

이러한 유형의 오류는 일반적으로 데이터 유형의 불일치로 인해 발생합니다. 예를 들어, varbinary 열에 ntext 데이터를 삽입하려고 하거나, 그 반대로 ntext 열에 varbinary 데이터를 삽입하려고 할 때 발생할 수 있습니다.

이 문제를 해결하기 위해서는 쿼리를 검토하고, 데이터베이스 스키마를 확인하여 각 열의 데이터 유형을 확인해야 합니다. g4_write_sub2_1 테이블에 대해 정의된 스키마와 각 열의 데이터 유형을 확인하고, 해당 열에 삽입하려는 데이터의 유형을 일치시키는 작업이 필요합니다.

데이터 유형이 일치하지 않는 경우에는 적절한 변환 함수나 형 변환을 사용하여 데이터를 맞춰줘야 합니다. 예를 들어, varbinary 데이터를 ntext로 삽입해야 한다면, 데이터를 변환하여 적절한 형식으로 삽입할 수 있습니다.

더 자세한 도움이 필요한 경우, 해당 데이터베이스와 관련된 코드와 스키마를 확인하고, 데이터 유형을 맞추는 작업을 수행하는 것이 좋습니다.

요즘에는 ntext  해당 타입을 잘 쓰지 않습니다 nvarchar(max) 해당 타입을 사용해야 위와 같은 충돌을 피할 수 있다고 합니다. 

 

저는 그냥 형변환을 줬습니다. 

이미 sm 업무로 타인이 개발해 놓은 거고 당연히 작동될줄 알았는데

쿼리 인서트가 안되는 부분에서 너무 시간을 잡아 먹고 있었습니다.

아무리 봐도 타입은 잘 맞게 세팅이 되어 있고 값 초기화 및 데이터 정형화도 잘 되어서 들어가는데

무엇이 문제일까 구글 검색을 통해 이것 저것 따라해봤지만 동일 했습니다 .

  CONVERT(NVARCHAR(MAX), #{wr_49})

해당 코드를 통해 ntext 형으로 된 모든 불확실한 값들을 형변환 하였습니다.

근데 또 이렇게 형변환을 했더니 

null 값 에러가 발생하여 

 COALESCE(CONVERT(NVARCHAR(MAX), #{wr_1}), '')

이와 같이 쿼리 문을 변경하여 null 값도 세팅해주었습니다 .

어디가 원인인지 몰라도 해결 되었습니다. 

더 좋은 방법이 있으면 알려주세요 

반응형