Oracle 在文本字段上使用Apex验证?

Oracle 在文本字段上使用Apex验证?,oracle,oracle-apex,Oracle,Oracle Apex,我遇到了一个问题,无法让我的验证在Apex中正常工作 我有3页的条目给我带来麻烦,:P5_头奖,:P5_彩票奖,:P5_总奖。中奖金额可以是任意大小,彩票奖金+总奖金可以是任意大小,只要少于中奖金额。我对此进行的验证如下: if :P5_TICKET_PRIZE > :P5_JACKPOT then return false; else return true; end if; 对这两个项目进行相同的验证,并进行必要的替换,非常简单。问题是,它似乎并不适用于所有数字。例如,jackpot

我遇到了一个问题,无法让我的验证在Apex中正常工作

我有3页的条目给我带来麻烦,:P5_头奖,:P5_彩票奖,:P5_总奖。中奖金额可以是任意大小,彩票奖金+总奖金可以是任意大小,只要少于中奖金额。我对此进行的验证如下:

if :P5_TICKET_PRIZE > :P5_JACKPOT then
return false;
else
return true;
end if;

对这两个项目进行相同的验证,并进行必要的替换,非常简单。问题是,它似乎并不适用于所有数字。例如,jackpot值为200,而其他两个项目的jackpot值均为50,这会导致错误标记,而它本不应该标记。但是,jackpot值为200和其他值为100+100不会导致错误标志,这是应该的。似乎有些数字起作用,有些则不起作用。有什么原因吗?

听起来问题在于数据类型
:P5_TICKET_PRIZE
:P5_JACKPOT
都是字符串,因此在比较它们时,可以得到字符比较语义。按字母顺序,字符串“50”位于字符串“200”之后,因为字符“5”位于字符“2”之后。如果要将
:P5_TICKET\u PRIZE
中的数值与
:P5_JACKPOT
中的数值进行比较,则需要在表达式的两侧应用
to_number
函数

if to_number( :P5_TICKET_PRIZE ) > to_number( :P5_JACKPOT ) then
  return false;
else
  return true;
end if;

就是这样。老实说,我忘了apex页面项目在varchar中存储所有内容,我可能会永远停留在这一点上。谢谢