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
我最近将数据库中的所有 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