0

我使用此代码从 SQL Server 2008 中的表中进行选择:

sqlcomm.CommandText = "select [objId] from [tablename] where href = @href"

href我表中的类型是ntext,我使用此代码选择:

 sqlcomm.Parameters.Add("@href", SqlDbType.NVarChar);
 sqlcomm.Parameters["@href"].Value = 'somestring';
 IDataReader reader = sqlcomm.ExecuteReader();

但它错误:

数据类型 ntext 和 varchar 在等于运算符中不兼容

当我使用SqlDbType.NText它有同样的错误。我无法更改href表格中的列类型。当我使用like @href它时,它可以工作,但我不能使用LIKE,因为我想精确匹配。

我该如何解决我的问题?

4

2 回答 2

1

错误就是它所说的。您不能将 NTEXT 列与 NVarchar 参数进行比较。

sqlcomm.CommandText="select [objId] from [tablename] where cast(href as nvarchar(max))=@href"

ntext、text 和 image (Transact-SQL)已经被弃用了一段时间。尽快将它们转换为 n/varchar(max) 和 varbinary(max)。

于 2012-10-03T10:34:53.953 回答
0

您不能在 SQL 的 where 子句中使用 ntext 列。如果您无法更改现有的列类型 egCAST(href AS nvarchar(max)),我建议转换 SQL 语句中的列。

于 2012-10-03T10:39:17.097 回答