2016-09-28 15 views
2

我在sql server新的,寫這個BCP查詢選擇保存查詢結果到CSV文件:
爲什麼我得到錯誤轉換數據類型varchar浮動bcp查詢出錯?

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.


我該如何解決這個問題?謝謝大家。

+0

@alex感謝關注我的問題,因爲,在桌子上用varchar(max)數據類型保存價格。 –

+0

@亞歷克斯,沒有不解決我的問題, –

+0

@alex我的朋友不工作。 –

回答

1

你有行情,這就是爲什麼你的查詢運行爲:

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

和SQL Server不能轉換CONVERT(float, @Price)浮動。

嘗試這樣運行:

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 

編輯

另一種方式:

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)更好地使用第二個解決方案,它更簡單。 – gofr1

相關問題