我最近将数据库中的所有 ntext 列类型转换为 nvarchar(max)。然后我为相关视图运行 EXECUTE sp_refreshview。
然而,当我在视图上运行以下参数查询(来自经典 ASP)时,出现错误:查询:
SELECT CARID
FROM vwCAR
WHERE (1=1)
AND (Description LIKE '%'+ ? + '%')
ORDER BY CARID;
错误:数据类型 nvarchar 和 ntext 在 add 运算符中不兼容(但不再有任何 ntext 列!)
但是,如果我直接运行相同的查询而不使用?参数为:查询:
SELECT CARID
FROM vwCAR
WHERE (1=1)
AND (Description LIKE '%test%')
ORDER BY CARID;
我尝试在查询中使用转换,但结果相同:查询:
SELECT CARID
FROM vwCAR
WHERE (1=1)
AND (CONVERT(NVARCHAR(MAX), Description) LIKE N'%'+ ? + '%')
ORDER BY CARID;
我究竟做错了什么?
附加信息:我将类型更改为 nVarChar(4000) 而不是 (MAX) 并且一切正常。这是一种解决方法,但它解决了问题。
就这样我将来会知道,是否可以在 nVarChar(Max) 类型列上使用 LIKE 条件运行参数查询?
(感谢@McNets 的帖子清理……我是新手)