从SQL Server中的表中选择数据时出错

时间:2012-10-03 10:33:31

标签: 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';
 IDataReader reader = sqlcomm.ExecuteReader();

但它错了:

  

数据类型ntext和varchar在等于运算符

中不兼容

当我使用SqlDbType.NText时,它有相同的错误。我无法在表格中更改href列的类型。当我使用like @href时,它有效,但我无法使用LIKE,因为我想要完全匹配。

如何解决我的问题?

2 个答案:

答案 0 :(得分:1)

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

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

ntext, text, and image (Transact-SQL)已暂时弃用了一段时间。希望尽快将它们转换为n / varchar(max)和varbinary(max)。

答案 1 :(得分:0)

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