<code class= "hljs powershell" > --<span class="hljs-number">1、利用 to_number
CREATE OR REPLACE <span class= "hljs-keyword" > FUNCTION isnumeric(str <span class= "hljs-keyword" > IN VARCHAR2)
<span class= "hljs-keyword" > RETURN NUMBER
IS
v_str FLOAT ;
<span class= "hljs-keyword" > BEGIN
<span class= "hljs-keyword" >IF str IS NULL
THEN
<span class= "hljs-keyword" > RETURN <span class= "hljs-number" >0;
<span class= "hljs-keyword" > ELSE
<span class= "hljs-keyword" > BEGIN
SELECT TO_NUMBER (str)
INTO v_str
FROM DUAL;
EXCEPTION
WHEN INVALID_NUMBER
THEN
<span class= "hljs-keyword" > RETURN <span class= "hljs-number" >0;
<span class= "hljs-keyword" > END ;
<span class= "hljs-keyword" > RETURN <span class= "hljs-number" >1;
<span class= "hljs-keyword" > END <span class= "hljs-keyword" >IF;
<span class= "hljs-keyword" > END isnumeric;
/
--<span class="hljs-number">2、利用 regexp_like
CREATE OR REPLACE <span class= "hljs-keyword" > FUNCTION isnumeric (str <span class= "hljs-keyword" > IN VARCHAR2)
<span class= "hljs-keyword" > RETURN NUMBER
IS
<span class= "hljs-keyword" > BEGIN
<span class= "hljs-keyword" >IF str IS NULL
THEN
<span class= "hljs-keyword" > RETURN <span class= "hljs-number" >0;
<span class= "hljs-keyword" > ELSE
<span class= "hljs-keyword" >IF regexp_like (str, <span class= "hljs-string" > '^(-{0,1}+{0,1})[0-9]+(.{0,1}[0-9]+)$' )
THEN
<span class= "hljs-keyword" > RETURN <span class= "hljs-number" >1;
<span class= "hljs-keyword" > ELSE
<span class= "hljs-keyword" > RETURN <span class= "hljs-number" >0;
<span class= "hljs-keyword" > END <span class= "hljs-keyword" >IF;
<span class= "hljs-keyword" > END <span class= "hljs-keyword" >IF;
<span class= "hljs-keyword" > END isnumeric;
/
--<span class="hljs-number">3、利用 translate
CREATE OR REPLACE <span class= "hljs-keyword" > FUNCTION isnumeric (str <span class= "hljs-keyword" > IN VARCHAR2)
<span class= "hljs-keyword" > RETURN NUMBER
IS
v_str VARCHAR2 (<span class= "hljs-number" >1000);
<span class= "hljs-keyword" > BEGIN
<span class= "hljs-keyword" >IF str IS NULL
THEN
<span class= "hljs-keyword" > RETURN <span class= "hljs-number" >0;
<span class= "hljs-keyword" > ELSE
v_str := translate(str, <span class= "hljs-string" > '.0123456789' , <span class= "hljs-string" > '.' );
<span class= "hljs-keyword" >IF v_str = <span class= "hljs-string" > '.' OR v_str = <span class= "hljs-string" > '+.' OR v_str = <span class= "hljs-string" > '-.' OR v_str IS NULL
THEN
<span class= "hljs-keyword" > RETURN <span class= "hljs-number" >1;
<span class= "hljs-keyword" > ELSE
<span class= "hljs-keyword" > RETURN <span class= "hljs-number" >0;
<span class= "hljs-keyword" > END <span class= "hljs-keyword" >IF;
<span class= "hljs-keyword" > END <span class= "hljs-keyword" >IF;
<span class= "hljs-keyword" > END isnumeric;
/</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
|