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

时间:2017-06-10 20:55:27

标签: sql-server-2008 parameters ntext

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

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

@types/mithril
  

错误:数据类型nvarchar和ntext在add运算符中不兼容(但是不再有任何ntext列!)

但是,如果我直接在没有SQL的情况下直接运行SQL Server,我就不会收到此错误。参数为:     查询:

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

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

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

我做错了什么?

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

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

(谢谢@McNets的帖子清理..我是新来的)

2 个答案:

答案 0 :(得分:0)

尝试在之前设置:

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

然后使用:

(描述如@value)

答案 1 :(得分:0)

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

当我直接从数据库中检索字段类型时出现混乱,如下所述,它返回203为nvarchar(max)类型,所以我假设根据该类型设置参数。 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