字段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的记录呢, 非常感谢!!!
...全文
243 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)
内容概要:本文围绕虚拟电厂与电动汽车之间的互动关系,采用主从博弈理论构建了二者间的优化决策模型,并引入条件风险价值(CVaR)来衡量和管理电力系统中由可再生能源出力不确定性及电动汽车充放电行为带来的风险。通过Matlab代码实现该模型,旨在优化虚拟电厂的调度策略,在保障系统经济性的同时提升其对不确定因素的鲁棒性。研究涵盖了模型构建、算法设计与仿真验证全过程,重点分析了不同风险偏好下虚拟电厂与电动汽车的博弈均衡结果及其对系统运行的影响,深入探讨了主从博弈框架下的决策机制与CVaR在电力金融风险量化中的应用。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事能源互联网、电力市场、电动汽车调度、风险管理等相关领域研究的研究生或科研人员。; 使用场景及目标:①研究虚拟电厂如何协调管理大量分布式能源与电动汽车资源;②探讨主从博弈在电力市场中的建模方法与求解技巧;③利用CVaR工具量化并控制电力系统运行中的金融或运行风险;④通过Matlab实现复杂优化模型并进行仿真分析。; 阅读建议:此资源结合了博弈论、风险管理和电力系统优化等多学科知识,建议读者在学习过程中重点关注模型假设的合理性、CVaR的应用逻辑以及Matlab代码的实现细节,宜配合相关理论教材与案例进行深入理解和复现。

34,876

社区成员

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

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