首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >存储过程中的TO_CHAR比较不正确

存储过程中的TO_CHAR比较不正确
EN

Stack Overflow用户
提问于 2021-05-11 00:19:49
回答 2查看 33关注 0票数 0

我正在使用Oracle,并且我需要在需要TO_CHAR()的地方执行一些数学计算。

但它并不是在比较这些值。

下面是示例。

代码语言:javascript
运行
AI代码解释
复制
IF TO_CHAR(V_APP_FAIR_RENT, '99,9999') > TO_CHAR(v_ACT_RENTAMT, '99,9999')
 THEN
 V_HIGHER_RENT_PREMIUM := 0;
dbms_output.put_line('Higher Rental premium 0 :' || V_HIGHER_RENT_PREMIUM);
ELSE
V_HIGHER_RENT_PREMIUM := v_ACT_RENTAMT / V_AMTINMONTH;
V_HIGHER_RENT_PREMIUM := V_HIGHER_RENT_PREMIUM * V_NOOFDAYSINMONTH;
V_HIGHER_RENT_PREMIUM := V_HIGHER_RENT_PREMIUM - V_APP_FAIR_RENT;
V_HIGHER_RENT_PREMIUM :=  ROUND(V_HIGHER_RENT_PREMIUM / V_NOOFOPCO);
dbms_output.put_line('Higher rental premium  1 :' || V_HIGHER_RENT_PREMIUM);
END IF;

两个比较的值如下所示。

V_APP_FAIR_RENT = 7455v_ACT_RENTAMT = 10928

从技术上讲,与上面的比较,它应该在IF条件下,但实际上它在ELSE条件下。

请指出我哪里错了。

EN

回答 2

Stack Overflow用户

发布于 2021-05-11 02:41:05

如果您所说的原始列是字符串(为什么?),并且您的示例似乎不包括组或小数字符,那么为什么不使用具有默认格式的to_number来比较数值呢?

代码语言:javascript
运行
AI代码解释
复制
IF to_number(V_APP_FAIR_RENT) > to_number(V_ACT_RENTAMT)
THEN
    V_HIGHER_RENT_PREMIUM := 0;
    dbms_output.put_line('Higher Rental premium 0 :' || V_HIGHER_RENT_PREMIUM);
ELSE
    V_HIGHER_RENT_PREMIUM := v_ACT_RENTAMT / V_AMTINMONTH;
    V_HIGHER_RENT_PREMIUM := V_HIGHER_RENT_PREMIUM * V_NOOFDAYSINMONTH;
    V_HIGHER_RENT_PREMIUM := V_HIGHER_RENT_PREMIUM - V_APP_FAIR_RENT;
    V_HIGHER_RENT_PREMIUM :=  ROUND(V_HIGHER_RENT_PREMIUM / V_NOOFOPCO);
    dbms_output.put_line('Higher rental premium  1 :' || V_HIGHER_RENT_PREMIUM);
END IF;
票数 2
EN

Stack Overflow用户

发布于 2021-05-11 02:03:21

正如@pmdba所说,为什么要转换已经是数字的内容(是吗?),以进行比较?

如果执行查询:

代码语言:javascript
运行
AI代码解释
复制
select TO_CHAR(7455 , '99,9999'), TO_CHAR(10928, '99,9999') from dual

结果是字符串:"7455“"1,0928”。

一个有千位分隔符,另一个没有。因此,您不是在比较数值,在这种情况下,字符串表示将不适用于比较。

如果您仍然坚持转换,则需要删除逗号分隔符:

代码语言:javascript
运行
AI代码解释
复制
select TO_CHAR(7455 , '999999'), TO_CHAR(10928, '999999') from dual

也许你可以编辑你的问题,显示这些变量是如何定义的,以确定你试图实现的目标。

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

https://stackoverflow.com/questions/67479041

复制
相关文章

相似问题

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