我遇到问题,我的验证在Apex中正常运行。
我有3个页面项目给我带来麻烦,:P5_JACKPOT,:P5_TICKET_PRIZE,:P5_TOTAL_PRIZE。累积奖金可以是任何大小,并且ticket_prize + total_prize可以是任何大小,只要它们少于累积奖金即可。我对此的验证如下:
if :P5_TICKET_PRIZE > :P5_JACKPOT then
return false;
else
return true;
end if;
两个项目的相同验证,必要的替换,足够简单。问题是,它似乎并不适用于所有数字。例如,累积奖金值为200,其他项目为50会导致错误标记,而不应该标记错误。但是,如果Jackpot值为200,其他值为100 + 100,则不会产生错误标记。似乎有些数字有效,有些则无效。这有什么原因吗?
答案 0 :(得分:3)
听起来问题是数据输入问题。 :P5_TICKET_PRIZE
和:P5_JACKPOT
都是字符串,所以当你比较它们时,你会得到字符比较语义。按字母顺序,字符串“50”在字符串“200”之后,因为字符“5”在字符“2”之后。如果您要将:P5_TICKET_PRIZE
中的数值与:P5_JACKPOT
中的数值进行比较,则需要将to_number
函数应用于表达式的两侧
if to_number( :P5_TICKET_PRIZE ) > to_number( :P5_JACKPOT ) then
return false;
else
return true;
end if;