首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的批处理脚本不能正确地执行SQL呢?

为什么我的批处理脚本不能正确地执行SQL呢?
EN

Stack Overflow用户
提问于 2014-12-30 15:10:19
回答 2查看 276关注 0票数 0

我在这里不知所措。我正在尝试从批处理脚本中获取一个厘米秒变量,并使用sqlcmd将该变量拖到sql表中。那部分工作得很好。最让我头疼的是,我试图把这个变量从厘米秒转换成分钟。

我知道这个批处理几乎无法处理浮点数,所以我想我会偷偷摸摸地处理它,这样我就可以在我的sql表中离最近的第十位有几分钟的时间了。我在批处理文件中保留了以厘米为单位的数学,并决定在sqlcmd外部查询中进行转换,如下所示:

代码语言:javascript
复制
sqlcmd -S <SERVER> -d <DATABASE> -v Var1="%variable1%" Var2="%variable2%" 
Var3="%variable3%" Var4="%variable4%" -i "\\path\to\the\query.sql"

查询如下所示,其中Var3是我正在转换的变量。

代码语言:javascript
复制
INSERT INTO table VALUES ($(Var1), $(Var2), ROUND(($(Var3)/6000),2), $(Var4))

但是,当我查看sql表中的条目时,它根本没有被圆形函数更改。不管我的论点是1,2,3等等.它保持四舍五入至最近的整数值。

我遗漏了什么东西吗?不应该将Var3值转换为查询中的浮点值然后转储到其中吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-30 15:22:43

是特定类型的,因此您应该将整数转换为浮点数,如下所示:

代码语言:javascript
复制
ROUND(CAST(($Var3) AS float) / 6000), 2)

或者使用浮动除法,如下所示:

代码语言:javascript
复制
ROUND(($Var3 / 6000.0), 2)

返回具有更高优先级的参数的数据类型。 有关更多信息,请参见数据类型优先(Transact-SQL)

票数 2
EN

Stack Overflow用户

发布于 2014-12-30 15:22:04

我假设Var3是int -除以int的结果在int中。一个简单的解决方法是将6000更改为6000.0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27707869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档