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

前端之家收集整理的这篇文章主要介绍了sql – 如何判断Oracle中的值是否不是数值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码,如果我的值无效,则返回错误消息.如果给定的值不是数字,我想给出相同的错误消息.
  1. IF(option_id = 0021) THEN
  2. IF((value<10000) or (value>7200000) or /* Numeric Check */)THEN
  3. ip_msg(6214,option_name); -- Error Message
  4. return;
  5. END IF;
  6. END IF;

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

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

解决方法

没有内置功能.你可以写一个
  1. CREATE FUNCTION is_numeric( p_str IN VARCHAR2 )
  2. RETURN NUMBER
  3. IS
  4. l_num NUMBER;
  5. BEGIN
  6. l_num := to_number( p_str );
  7. RETURN 1;
  8. EXCEPTION
  9. WHEN value_error
  10. THEN
  11. RETURN 0;
  12. END;

和/或

  1. CREATE FUNCTION my_to_number( p_str IN VARCHAR2 )
  2. RETURN NUMBER
  3. IS
  4. l_num NUMBER;
  5. BEGIN
  6. l_num := to_number( p_str );
  7. RETURN l_num;
  8. EXCEPTION
  9. WHEN value_error
  10. THEN
  11. RETURN NULL;
  12. END;

然后你可以做

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

猜你在找的MsSQL相关文章