字段Amout为Varchar类型的小数数值,查询语句怎么写才能直接where amount='7.9'

Felix_ZZZ 2013-02-19 04:52:35
小弟,遇到如下问题,望前辈指导,谢谢!

已知字段Amount为Varchar类型,amount的值为小数数值,现在想要查询所有满足amount='7.9'的记录。
小弟直接用
1. select *from sales_d where amount='7.9'会直接爆varchar冲突。
2. select *from sales_d where convert(int,amount)='7.9'还是爆varchar冲突
3. select *from sales_d where convert(int,convert(numeric(18,9),amount))='7.9'同样出错。

最后使用select *From sales_d where convert(int,cast(amount as float))>='7' and convert(int,cast(amount as float))<'7',这样语句没有爆错。。。

求大神,有没有办法可以直接找出amount转换为数值等于7.9的记录呢, 非常感谢!!!
...全文
151 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
szm341 2013-02-19
尝试近似一下精度 select *from sales_d where convert(numeric(18,2),amount)=7.9
  • 打赏
  • 举报
回复
發糞塗牆 2013-02-19
比较常用的是decimal,money的话除非需要非常精确,否则没必要使用,这个类型的使用会有一些限制。
  • 打赏
  • 举报
回复
Felix_ZZZ 2013-02-19
引用 6 楼 DBA_Huangzj 的回复:
引用 5 楼 Felix_ZZZ 的回复:引用 2 楼 szm341 的回复: 你的第一个语句如果报错,那你的amount的数据类型应该不是varchar吧 正常的字符匹配不存在类型转换,不会报错 至于你后面的语句,句3应该是可以查询的 select *from sales_d where convert(int,convert(numeric(18,9),a……
弱弱问一下,SQL里面通常带小数点的数值计算都是用哪个(转换)类型进行运算的,谢谢
  • 打赏
  • 举报
回复
發糞塗牆 2013-02-19
引用 5 楼 Felix_ZZZ 的回复:
引用 2 楼 szm341 的回复: 你的第一个语句如果报错,那你的amount的数据类型应该不是varchar吧 正常的字符匹配不存在类型转换,不会报错 至于你后面的语句,句3应该是可以查询的 select *from sales_d where convert(int,convert(numeric(18,9),amount))=7.9 哥们,你是对的,Amount是mone……
找不到应该是隐式转换成兼容类型,但是不知道转换成什么了,匹配不出来。你需要where匹配的类型是什么,你就convert什么,让它的类型和字段相同
  • 打赏
  • 举报
回复
Felix_ZZZ 2013-02-19
引用 2 楼 szm341 的回复:
你的第一个语句如果报错,那你的amount的数据类型应该不是varchar吧 正常的字符匹配不存在类型转换,不会报错 至于你后面的语句,句3应该是可以查询的 select *from sales_d where convert(int,convert(numeric(18,9),amount))=7.9
哥们,你是对的,Amount是money类型。。。。。。 句3可以运行,没有爆错,但是找不到任何记录。。。
  • 打赏
  • 举报
回复
Felix_ZZZ 2013-02-19
引用 3 楼 szm341 的回复:
错了,就不要转换为整数了 select *from sales_d where convert(numeric(18,9),amount)=7.9
thanks,试过真行啊!
  • 打赏
  • 举报
回复
szm341 2013-02-19
错了,就不要转换为整数了 select *from sales_d where convert(numeric(18,9),amount)=7.9
  • 打赏
  • 举报
回复
szm341 2013-02-19
你的第一个语句如果报错,那你的amount的数据类型应该不是varchar吧 正常的字符匹配不存在类型转换,不会报错 至于你后面的语句,句3应该是可以查询的 select *from sales_d where convert(int,convert(numeric(18,9),amount))=7.9
  • 打赏
  • 举报
回复
-Tracy-McGrady- 2013-02-19
select *from sales_d where amount=convert(varchar(10),7.9)
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2013-02-19 04:52
社区公告
暂无公告