sql-server - ntext 与 int MSSQL Server 不兼容

标签 sql-server

我在处理 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/

相关文章:

sql-server - 在重复值前面生成数字

c# - 使用正确的凭据获取 SQL Server 超时错误,立即拒绝(故意)不正确的凭据

sql-server - 如何最大限度地减少 SQL 复制中的数据

SQL Server : how to combine two select queries from the same table and take the result on Column

sql-server - 从具有另一个(唯一)字段的多个表中查找主 ID

json - SQL Server 中的 OPENJSON 动态使用 with 语句

sql-server - 如何在 SQL Server 上的 CASE WHEN 中选择多个列?

sql-server - TSQL Oddity 与 String_Agg

sql-server - Entity Framework 6 数据库优先方法不从 SQL Server 创建所有表

sql-server - 为什么不将 IGNORE_DUP_KEY 设置为 ON?