字段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的记录呢, 非常感谢!!!
...全文
173 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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)

34,587

社区成员

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

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