【问题标题】:Validation for Integer value [duplicate]验证整数值[重复]
【发布时间】:2020-12-28 20:23:03
【问题描述】:

我想验证一列AMOUNT Varchar(2),它应该只包含整数值。 我正在使用以下逻辑:

 IF regexp_like(amount,'^[0-9]+') THEN
        X_STATUS:=true;
           else X_STATUS:=false;
            X_REMARKS:='amount SHOULD BE INTEGER';
            RETURN;
        END IF;

但它不起作用,请帮助我获得最佳解决方案: 谢谢你

【问题讨论】:

  • it doesn't work 是什么意思?有错误信息吗?你会得到意想不到的结果吗?代码是否使合法数字无效,反之亦然?

标签: sql regex string oracle plsql


【解决方案1】:

字符串的结尾需要一个锚点:

IF regexp_like(amount, '^[0-9]+$')

这匹配字符串中的所有个字符。

如果你也不想要前导零,那么:

IF regexp_like(amount, '^([1-9][0-9]*|0)$')

这假设您不想要负数。如果你这样做:

IF regexp_like(amount, '^(-?[1-9][0-9]*|0)$')

【讨论】:

    【解决方案2】:

    这是你的代码:

    regexp_like(amount,'^[0-9]+')
    

    它检查amount 以数字开头 - 但其他字符可能是任何东西。通常,它会允许 '1A''2$'3%' 之类的内容。

    考虑:

    regexp_like(amount,'^[0-9]+$')
    

    $ 表示正则表达式中字符串的结尾,所以这意味着:所有字符都必须是数字。

    如果您也想允许空字符串(上面的表达式没有这样做),您可以将量词 + 更改为 *

    【讨论】:

      猜你喜欢
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 2016-10-09
      相关资源
      最近更新 更多