2017-09-08 1 views
0

私は以下のような列の値を検証する必要があります。PL内のデータベースレベルの列を検証する

    1. これは、長さが18文字でなければなりません。
    1. 特殊文字は使用できません。以下

その列の正しい値です。その値が要件に合致チェックする

INAPDNCHXXXXTW6002

し、その値を取得するためのクエリがそう

SELECT RJ_NETWORK_ENTITY_ID FROM NE.STRUCTURE WHERE RJ_SAPID = P_SAPID; 

を下回っている、私はデータベースレベルでこれを行うことができますどのように

+1

を使用すると、データベースの制約で、PL/SQLでこれを行う代わりに、言う必要があるのはなぜ? – Boneist

答えて

1

一つの方法であり、正規表現を使用する:

REGEXP_LIKE(col, '^[a-z0-9]{18}$', 'i') ; 

帽子RJ_NETWORK_ENTITY_ID列がこれらの要件を満たしている、あなたが使用することができます。

SELECT RJ_NETWORK_ENTITY_ID FROM NE.STRUCTURE 
WHERE 
RJ_SAPID = P_SAPID 
and 
REGEXP_LIKE(RJ_NETWORK_ENTITY_ID, '^[a-z0-9]{18}$', 'i'); 
関連する問題