2011-09-30 73 views
2

我有兩個表(設備&軟件),我想要做一個INNER JOIN上。他們都有一個名爲EQCN的領域。這是一個文本字段。我收到以下錯誤:SQL內部加入文本列

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

雖然這是奇怪的,微軟建議做一個文本或ntext使用類似SUBSTRING的間接比較。例如:

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

當然,這就提出了一個整體的其他一系列的問題一樣,如果字符的第一個#是相同的,等我會建議去改變類型的路線,如果你能先,而不是接受這個建議。

Source