4

MSSQL EXPRESS 2008 を使用しており、次のクエリを使用して、レコードの ID 列と説明列を連結しようとしています。

SELECT CAST(GotoviProizvodi.ID as nvarchar(4)) + ' - ' + CAST(GotoviProizvodi.Opis as nvarchar(max)) AS Opis 
FROM GotoviProizvodi,Recept 
WHERE Recept.ID=@ID 
  AND Recept.Proizvod=GotoviProizvodi.Opis

GotoviProizvodi.ID is defined in the schema as int   -- the ID column
GotoviProizvodi.Opis is defined as nvarchar(200)   -- the description column

しかし、クエリを実行しようとすると、次のようになります。

メッセージ 245、レベル 16、状態 1、プロシージャ GetProizvodByReceptId、行 2 nvarchar 値 'Test' をデータ型 int に変換するときに変換に失敗しました。

nvarchar に変換するように明示的に指示しているのに、なぜ int に変換しようとしているのですか? 回避策はありますか?

4

2 に答える 2

5

エラーが where 条件ではなく、キャストに関連していると確信していますか? 列の型が一致していることを確認してください

于 2012-11-15T12:00:13.843 に答える
4

私はこれがうまくいくと思う:

SELECT (CONVERT(NVARCHAR, GotoviProizvodi.ID) + ' - ' + GotoviProizvodi.Opis) AS Opis 
FROM GotoviProizvodi,Recept 
WHERE Recept.ID=@ID 
  AND Recept.Proizvod=GotoviProizvodi.Opis
于 2012-11-15T14:32:25.327 に答える