nvarchar(max) 上的参数查询显示为 ntext 错误

Parameter query on nvarchar(max) shows as ntext error

我最近将数据库中的所有 ntext 列类型都转换为 nvarchar(max)。 然后我 运行 执行 sp_refreshview 以获得相关视图。

然而,当我在视图上 运行 以下参数查询(来自经典 ASP)时,出现错误: 查询:

SELECT   CARID 
FROM     vwCAR 
WHERE    (1=1) 
AND      (Description LIKE '%'+ ? + '%') 
ORDER BY CARID;

Error: The data types nvarchar and ntext are incompatible in the add operator (yet there are no longer any ntext columns!)

但是,如果我直接 运行 相同的查询 SQL 服务器而没有 ?参数为: 查询:

SELECT  CARID 
FROM    vwCAR 
WHERE   (1=1) 
AND     (Description LIKE '%test%') 
ORDER BY CARID; 

我尝试在查询中使用 Convert,但结果相同: 查询:

SELECT   CARID 
FROM     vwCAR 
WHERE    (1=1) 
AND      (CONVERT(NVARCHAR(MAX), Description) LIKE N'%'+ ? + '%') 
ORDER BY CARID; 

我做错了什么?

附加信息: 我将类型更改为 nVarChar(4000) 而不是 (MAX) 并且一切正常。这是一个解决方法,但它解决了问题。

只是为了将来我会知道,是否可以 运行 在 nVarChar(Max) 类型列上使用 LIKE 条件进行参数查询?

(感谢@McNets 的post 清理..我是新手)

尝试设置之前:

设置@value = '%' + @value + '%' ;

然后使用:

(描述如@value)

我在参数中使用了错误的字段类型 adLongVarWChar (203)。应该一直使用 adVarWChar (202) 作为 nvarchar(max) 类型。

如下所述,当我直接从数据库中检索字段类型时出现了混淆,它为 nvarchar(max) 类型返回了 203,因此我假设根据该类型设置参数是可行的。
For each ofield in objRS.Fields Redim Preserve FieldTypes(1,x) FieldTypes(0,x) = ofield.type FieldTypes(1,x) = ofield.definedsize x = x + 1 Next