我使用此代码从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
,因为我想要完全匹配。
如何解决我的问题?
答案 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语句中转换列。