2011-09-30 2 views
2

INNER JOIN을 수행 할 두 개의 테이블 (장비 & 소프트웨어)이 있습니다. 둘 다 EQCN이라는 필드를 가지고 있습니다. 이것은 텍스트 필드입니다. 다음 오류가 발생합니다.텍스트 열의 SQL INNER JOIN

The data types text and text are incompatible in the equal to operator.

이 문제를 해결할 수있는 방법이 있습니다.

+2

이 열에서 가장 긴 항목의 길이는 얼마입니까? –

+0

SQL을 게시하십시오. – Oded

+0

@Oded - 정말 필요하지 않습니다. 이것은'text' 데이터 유형의 두 컬럼을 시도하고 조인 할 때 얻는 에러입니다. –

답변

4

이 열의 데이터 형식을 varchar(max)으로 변경하십시오.

From Microsoft

:이 이상한하지만

ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.

0

TEXT 필드에서 조인을하는 것은 작동하더라도 매우 느릴 수 있습니다. 아마도 다음을 사용하십시오 :

CONVERT(varchar, myColumnName) = 'my value' 
+0

그건 그것을 '30'문자로 자르고 의미를 변경합니다. –

1

, 마이크로 소프트는 텍스트 또는 SUBSTRING 같은 것을 사용하여 NTEXT 간접 비교를하고있는 것이 좋습니다. 예 : 물론

SELECT * 
FROM t1 
JOIN t2 ON SUBSTRING(t1.textcolumn, 1, 20) = SUBSTRING(t2.textcolumn, 1, 20) 

이 문자의 첫 번째 # 등, 동일한 경우 내가 유형을 변경하는 경로를가는 것이 좋습니다 먼저 할 수있는 경우가 아닌 것입니다 무슨 같은 문제의 완전히 다른 세트를 제기 이 충고를 듣는다.

Source