Sybase ASA 6-使用函数更新值以获取新值

2020-09-13 03:34发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我必须将Sybase 6 ASA用于旧式销售点应用程序,并且我试图使用函数来更新一对列值,就像在MySQL/MariaDB中一样。 但是,当我运行更新时,它不起作用,但也没有错误。 为了使工作顺利进行,即使列本身已经是双精度值,我也必须将字段强制转换为数字。

基本上,我需要做的是将两个字段设置为最大取整为2,并将小数点前的值设置为最大9位数。 我将重点放在四舍五入上,因为这非常必要。

这是我尝试舍入的方法:
update itemvendors将cost = cast(round(cost,2)设置为numeric(15,2));

但是,这不起作用,但是如果我在选择中使用它,则该数字将按预期四舍五入。 难道我做错了什么? 如果有关系,我正在使用isql编辑器。

由于相关字段存储为双精度型,我如何将小数点前的数字舍去为9?

非常感谢任何帮助!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我必须将Sybase 6 ASA用于旧式销售点应用程序,并且我试图使用函数来更新一对列值,就像在MySQL/MariaDB中一样。 但是,当我运行更新时,它不起作用,但也没有错误。 为了使工作顺利进行,即使列本身已经是双精度值,我也必须将字段强制转换为数字。

基本上,我需要做的是将两个字段设置为最大取整为2,并将小数点前的值设置为最大9位数。 我将重点放在四舍五入上,因为这非常必要。

这是我尝试舍入的方法:
update itemvendors将cost = cast(round(cost,2)设置为numeric(15,2));

但是,这不起作用,但是如果我在选择中使用它,则该数字将按预期四舍五入。 难道我做错了什么? 如果有关系,我正在使用isql编辑器。

由于相关字段存储为双精度型,我如何将小数点前的数字舍去为9?

非常感谢任何帮助!

付费偷看设置
发送
3条回答
灬番茄
1楼-- · 2020-09-13 04:23

请注意,double数据类型不是精确的数字类型,因此有些带有十进制小数的值根本无法与该数据类型完全存储在一起。 那是设计使然,与无法将1/3精确地存储在十进制系统中的事实相当。

说,使用dbisqlc运行时,以下内容将返回" 14.960000000000003":

选择演员表(14.96为两倍)

FWIW:由于货币变化,我曾经不得不转换双精度值,并使用ROUND()来构建具有2个十进制数字的值,并且感到惊讶的是,某些所得的双精度值仍然具有"更多数字"。

浮生未央
2楼-- · 2020-09-13 04:24

以下代码(在v17中进行了测试):

创建表t(
 c1倍,
 C2双
 );
 插入t(c1)个值(123.3456789);
 更新t set c2 = round(c1,2);
 从t中选择*; 

返回

 123.3456789 123.35 

您可以在v6中对此进行测试并报告任何差异。 如果这在v6中有效,请修改代码段以演示您的操作方式(删除CAST解决方法以显示问题行为)。

闻人可可
3楼-- · 2020-09-13 04:15

是的,您可以更改数据类型 通过带有编码" ALTER column-name ..."子句的ALTER TABLE语句创建列(或使用ASA 6,我想它是" ALTER TABLE ... MODIFY ..."。)我没有旧的 语法,但是文档应该告诉您。

一周热门 更多>