我有两个表(设备和软件),我想要INNER JOIN
开启。他们都有一个名为EQCN的领域。这是一个文本字段。我收到以下错误:
数据类型文本和文本在等于运算符中不兼容。
必须有办法解决这个问题。
答案 0 :(得分:4)
将这些列的数据类型更改为varchar(max)
。
将来的版本中将删除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)
这当然引发了另外一组问题,例如,如果第一个字符#相同,等等。如果你可以,我建议改变类型的路线,而不是采纳这个建议。
答案 2 :(得分:0)
在TEXT字段上进行连接非常慢,即使它确实有效。也许使用:
CONVERT(varchar, myColumnName) = 'my value'