【问题标题】:Why i get Error converting data type varchar to float error in bcp query out?为什么我在 bcp 查询中出现错误将数据类型 varchar 转换为浮点错误?
【发布时间】:2016-09-28 06:05:37
【问题描述】:

我是sql server 的新手,写这个 bcp 查询以将选择查询结果保存到 csv 文件:

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' 


但是当我运行那个查询时,得到这个错误:

错误 = [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]错误 将数据类型 varchar 转换为 float。


我该如何解决这个问题?谢谢大家。

【问题讨论】:

  • @alex 感谢关注我的问题,因为在表格价格上保存为 varchar(max) 数据类型。
  • @alex,不,这不能解决我的问题,
  • @alex 我的朋友那不行。

标签: sql-server


【解决方案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 "'+@Query+'" 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

【讨论】:

  • 感谢关注我的问题,请等待测试。
  • 第一个查询太复杂(EXEC里面的EXEC)最好用第二个解决方案,它更简单。
  • 我的荣幸! :)
猜你喜欢
  • 2010-12-01
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 2017-04-30
相关资源
最近更新 更多