我最近将数据库中的所有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的帖子清理..我是新来的)
答案 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