2016-09-28 7 views
2

私はsql serverに新たなんだ、CSVファイルに選択クエリの結果を保存するため、このBCPのクエリを記述:
なぜ私は取得bcparのデータ型varcharを浮動小数点エラーに変換するエラー?

declare @Price as float 
set @Price=1744 

EXEC xp_cmdshell 'bcp "select [Telno],[Cycle],[Price] FROM [ClubEatc].[dbo].[CycleAnalysisTable] where CONVERT(float, [Price])>''CONVERT(float, @Price)''" queryout d:\F.txt -c -T' 


しかし、私は、そのクエリを実行すると、このエラーが出る:

Error = [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Error converting data type varchar to float.


どうすれば問題を解決できますか?ありがとうございます。

select [Telno],[Cycle],[Price] 
FROM [ClubEatc].[dbo].[CycleAnalysisTable] 
where CONVERT(float, [Price])>'CONVERT(float, @Price)' 

そしてSQL Serverが浮かぶようにCONVERT(float, @Price)を変換することはできません。

+0

@alexおかげでこのようにそれを実行するための

てみてくださいvarchar(max)データ型で価格を保存します。 –

+0

@アレックス、いいえ、私の問題を解決しない、 –

+0

@alex私の友人は仕事ではありません。 –

答えて

1

はあなたのクエリのように走った理由です、引用符を得ました。

declare @Price as float, 
     @Query nvarchar(max), 
     @sql nvarchar(max) 

SELECT @Price=1744 

SELECT @Query = 'select [Telno],[Cycle],[Price] FROM [ClubEatc].[dbo].[CycleAnalysisTable] where CONVERT(float, [Price])>' +CAST(@Price as varchar(100)) 


SELECT @sql= 'EXEC xp_cmdshell ''bcp "'[email protected]+'" queryout d:\F.txt -c -T''' 

EXEC sp_executesql @sql 

EDIT

もう一つの方法:ので、テーブルの上に、私の問題に注意を払うために

declare @Price as float, 
     @bcp varchar(max) 

SELECT @Price=1744 

SELECT @bcp= 'bcp "select [Telno],[Cycle],[Price] FROM [ClubEatc].[dbo].[CycleAnalysisTable] where CONVERT(float, [Price])>' +CAST(@Price as nvarchar(100))+'" queryout d:\F.txt -c -T' 

EXEC master..xp_cmdshell @bcp 
+0

私の問題に注意を払ってくれてありがとう、それをテストするのを待ってください。 –

+0

もう一つの方法があります、私は私の答えを編集します。 – gofr1

+0

最初のクエリが複雑すぎます(EXEC内のEXEC)2番目のソリューションを使用するほうがずっと簡単です。 – gofr1

関連する問題