SQL INNER JOIN文本列

时间:2011-09-30 19:30:10

标签: sql text inner-join

我有两个表(设备和软件),我想要INNER JOIN开启。他们都有一个名为EQCN的领域。这是一个文本字段。我收到以下错误:

  

数据类型文本和文本在等于运算符中不兼容。

必须有办法解决这个问题。

3 个答案:

答案 0 :(得分:4)

将这些列的数据类型更改为varchar(max)

From Microsoft

  

将来的版本中将删除ntext,text和image数据类型   Microsoft SQL Server。避免在新的中使用这些数据类型   开发工作,并计划修改当前使用的应用程序   他们。请改用nvarchar(max),varchar(max)和varbinary(max)。

答案 1 :(得分:1)

虽然这很奇怪,但微软建议使用类似SUBSTRING的东西对文本或ntext进行间接比较。例如:

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

这当然引发了另外一组问题,例如,如果第一个字符#相同,等等。如果你可以,我建议改变类型的路线,而不是采纳这个建议。

Source

答案 2 :(得分:0)

在TEXT字段上进行连接非常慢,即使它确实有效。也许使用:

CONVERT(varchar, myColumnName) = 'my value'