C# 从SQL Server中的表中选择数据时出错
我使用此代码从SQL Server 2008中的表中选择:C# 从SQL Server中的表中选择数据时出错,c#,sql,sql-server,sql-server-2008,C#,Sql,Sql Server,Sql Server 2008,我使用此代码从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'; IDataRead
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
,因为我想精确匹配
我怎样才能解决我的问题呢?错误就在上面。不能将NTEXT列与NVarchar参数进行比较
sqlcomm.CommandText="select [objId] from [tablename] where cast(href as nvarchar(max))=@href"
已经有一段时间不推荐了。请尽快将它们转换为n/varchar(max)和varbinary(max)。在SQL的where子句中不能使用ntext列。如果您无法更改现有的列类型,例如CAST(href AS nvarchar(max)),我建议您转换SQL语句中的列 HREF的参数类型是NVarChar?这应该与基础类型匹配。您可以对
ntext
使用LIKE
。只是不要包含任何通配符。但这并不重要,因为该列无论如何都无法编制索引。