2017-09-08 21 views
0

我有一個要求驗證列值的要求,它的值如下所示。在PL中的數據庫級別驗證一列SQL

    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') ; 

如果要檢查t帽子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');