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 に答える