把文本字段转换数值求和报错

小野马1209 2018-01-20 11:46:43
消息 8114,级别 16,状态 5,第 1 行
从数据类型 nvarchar 转换为 float 时出错。
DELETE FROM [dbo].[101$] 
WHERE [项目主数据编号] in
(SELECT [项目主数据编号] from [dbo].[101$]
GROUP BY [项目主数据编号],[往来对象代码] having sum(CAST(发生金额 as float)) =0)
...全文
457 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2018-01-22
  • 打赏
  • 举报
回复
DELETE FROM [dbo].[101$] 
WHERE [项目主数据编号] in 
(SELECT [项目主数据编号] from [dbo].[101$] 
WHERE ISNUMERIC(发生金额) = 1
GROUP BY [项目主数据编号],[往来对象代码] having sum(CAST(发生金额 as float)) =0)
zjcxc 元老 2018-01-22
  • 打赏
  • 举报
回复
数据中包含不能转的字符,你应该先把这种数据过滤掉
  • 打赏
  • 举报
回复

DELETE FROM [dbo].[101$] 
WHERE [项目主数据编号] in 
(SELECT [项目主数据编号] from [dbo].[101$] 
GROUP BY [项目主数据编号],[往来对象代码] having sum(CAST(ISNULL(发生金额,'0') as float)) =0)
试试是不是好了,如果不是估计你这数据健康问题就大了,全角符号、全角数字、不合格字符都有可能。
听雨停了 2018-01-22
  • 打赏
  • 举报
回复
检查下看是不是你的数据存在问题
日月路明 2018-01-22
  • 打赏
  • 举报
回复
数据有问题,建议 发生金额 直接定义成float,定义成字符型就是自寻烦恼
  • 打赏
  • 举报
回复
哎,初学小菜鸟 频频出问题也是
小野马1209 2018-01-20
  • 打赏
  • 举报
回复
用变量测试了下这么写没问题
DECLARE  @A VARCHAR (100)
SET @A='123.12'

SELECT SUM(CAST(@A AS FLOAT)) AS V1

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧