加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql – 如何判断Oracle中的值是否不是数值?

发布时间:2021-01-17 09:28:16 所属栏目:编程 来源:网络整理
导读:我有以下代码,如果我的值无效,则返回错误消息.如果给定的值不是数字,我想给出相同的错误消息. IF(option_id = 0021) THEN IF((value10000) or (value7200000) or /* Numeric Check */)THEN ip_msg(6214,option_name); -- Error Message return; END IF;END IF

我有以下代码,如果我的值无效,则返回错误消息.如果给定的值不是数字,我想给出相同的错误消息.

IF(option_id = 0021) THEN 
      IF((value<10000) or (value>7200000) or /* Numeric Check */)THEN
          ip_msg(6214,option_name);  -- Error Message
          return;
      END IF;
END IF;

在SQL Server中,我只使用了ISNUMERIC().我想在Oracle中做类似的事情.如,

IF((!ISNUMERIC(value)) or (value<10000) or (value>7200000))
    THEN ...

解决方法

没有内置功能.你可以写一个
CREATE FUNCTION is_numeric( p_str IN VARCHAR2 )
  RETURN NUMBER
IS
  l_num NUMBER;
BEGIN
  l_num := to_number( p_str );
  RETURN 1;
EXCEPTION
  WHEN value_error
  THEN
    RETURN 0;
END;

和/或

CREATE FUNCTION my_to_number( p_str IN VARCHAR2 )
  RETURN NUMBER
IS
  l_num NUMBER;
BEGIN
  l_num := to_number( p_str );
  RETURN l_num;
EXCEPTION
  WHEN value_error
  THEN
    RETURN NULL;
END;

然后你可以做

IF( is_numeric( str ) = 1 AND 
    my_to_number( str ) >= 1000 AND
    my_to_number( str ) <= 7000 )

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读