LoginSignup
1
0

More than 5 years have passed since last update.

Oracle 数値判定 PL/SQL

Last updated at Posted at 2018-02-07
is_number.sql
CREATE OR REPLACE FUNCTION IS_NUMBER
    (
    IN_STRING IN VARCHAR2 -- 文字列
    )
    RETURN VARCHAR2 -- 'OK' or 'NG'
--
-- 数値チェック
--
--  入力文字列が数値かチェックする。
--
IS
    L_NUMBER  NUMBER ;
BEGIN
    L_NUMBER := TO_NUMBER(IN_STRING) ;
    RETURN('OK') ;
EXCEPTION
    WHEN OTHERS THEN
        RETURN('NG') ;
END IS_NUMBER ;
/
-- 以下、インスタンス内のすべてのスキーマで実行できるように共有プログラムを置くスキーマに置くことを想定。要 CREATE PUBLIC SYNONYM, DROP PUBLIC SYNONYM 権限
CREATE OR REPLACE PUBLIC SYNONYM IS_NUMBER FOR IS_NUMBER ;
GRANT EXECUTE ON IS_NUMBER TO PUBLIC ;
-- 使用例
COLUMN STRING     FORMAT A20
COLUMN IS_NUMBER  FORMAT A2
SELECT A.STRING
     , IS_NUMBER(A.STRING) AS IS_NUMBER
FROM(
    SELECT '0123456789'  AS STRING FROM DUAL UNION ALL
    SELECT '0123.456789'           FROM DUAL UNION ALL
    SELECT '-0123456789'           FROM DUAL UNION ALL
    SELECT '0123456789+'           FROM DUAL UNION ALL
    SELECT '012345 6789'           FROM DUAL UNION ALL
    SELECT ' 0123456789'           FROM DUAL UNION ALL
    SELECT '0123456789 '           FROM DUAL
    ) A ;
COLUMN STRING    CLEAR
COLUMN IS_NUMBER CLEAR

STRING               IS
-------------------- --
0123456789           OK
0123.456789          OK
-0123456789          OK
0123456789+          NG
012345 6789          NG
 0123456789          OK
0123456789           OK

7行が選択されました。

1
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0