我在处理 sql 时遇到错误:我不知道如何修复它:
ntext 与 int 不兼容
我的查询是这样的
select * from table1 where id=textfield union select name,age,(这里是一个 ntext 值) from table2
我尝试使用 convert(myfield as nvarchar(max))
但仍然没有运气,错误改为:
ntext 数据类型不能选择为 DISTINCT,因为它不具有可比性。
最佳答案
第一:
ntext
已弃用,应替换为 nvarchar(MAX)
。
除此之外,ntext
不具有可比性,不能与 DISTINCT
或 =
一起使用。
当您使用关键字 UNION
连接 2 个查询时,它会自动调用 DISTINCT
操作来仅连接两个查询中的唯一数据。
但是,nvarchar(MAX)
可以在 DISTINCT
中使用,因此,最好的解决方案是更新模型以使用此类型而不是 ntext
.
如果这无法完成,请不要执行 select * from table1
而是使用:
select field1, field2, Cast(field3 as NVarchar(Max))
from table1
union
select field1, field2, Cast(field3 as nvarchar(MAX))
from table2
最后一点:
建议在使用联合而不是 *
通配符时显式调用您的字段。
关于sql-server - ntext 与 int MSSQL Server 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21638993/