如果我的值无效,下面的代码将返回一条错误消息。如果给定的值不是数字,我想给出相同的错误消息。
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()
. 我想在甲骨文中做一些类似的事情。比如,
IF((!ISNUMERIC(value)) or (value<10000) or (value>7200000))
THEN ...
8条答案
按热度按时间w8biq8rn1#
如果列只包含数字字符,则返回true
rseugnpd2#
从
Oracle DB 12c Release 2
您可以使用以下转换函数:validate\u conversion确定是否可以将expr转换为指定的数据类型。如果expr可以成功转换,那么这个函数返回1;否则,此函数返回0。如果expr的计算结果为null,则此函数返回1。如果在计算expr时发生错误,则此函数返回错误。
db<>小提琴演示
vshtjzan3#
没有内置函数。你可以写一个
和/或
然后你就可以做了
如果您碰巧使用的是oracle 12.2或更高版本,则
to_number
你可以利用的功能tez616oj4#
我在网上找到的最好答案是:
oknwwptz5#
您可以使用以下正则表达式来匹配整数(例如。,
123
),浮点数(12.3
),和带指数的数字(1.2e3
):如果你想接受
+
标志以及-
符号(就像甲骨文对TO_NUMBER()
),可以更改-
上至[+-]
. 因此,您可以将上面的代码块重写如下:我不完全确定是否会处理所有值,因此您可能需要添加一个
EXCEPTION
阻止或写入自定义to_number()
如@justincave所示。wrrgggsh6#
0s7z1bwu7#
有很多方法,但这一个适合我。
u7up0aaq8#
这个正则表达式将匹配像5、-5、+5、5.44、3.45e-3这样的数字