sql >> データベース >  >> RDS >> Oracle

sql/oracleの電子メール/郵便番号フィールドの検証

    引用符を含むメールアドレスの正規表現構文は次のとおりです

    '[a-zA-Z0-9._%-][email protected][a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}'
    

    したがって、where句でregexp_like()を使用するか、regexp_substr()を使用して、フィールドに有効な電子メールアドレスが含まれているかどうかを確認できます。次に例を示します。regexp_substr()が.domainが欠落しているアドレスでNULLを返し、サブストリングの検証に失敗することがわかります。そこから、その周りにチェック制約を作成したり、トリガー(yuck)などを使用して強制したりできます。

    SQL> desc email
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     EMAIL_ID                                           NUMBER
     EMAIL_ADDRESS                                      VARCHAR2(128)
    
    
    SQL> select * from email;
    
      EMAIL_ID EMAIL_ADDRESS
    ---------- ----------------------------------------
             1 [email protected]
             2 [email protected]
             3 [email protected]
             4 [email protected]_domaindotorg
    
    
    SQL> @qry2
    SQL> column email_address format a40
    SQL> column substr_result format a30
    SQL> SELECT  email_address
      2       ,  regexp_substr(email_address,'[a-zA-Z0-9._%-][email protected][a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}') substr_result
      3    FROM  email
      4  /
    
    EMAIL_ADDRESS                            SUBSTR_RESULT
    ---------------------------------------- ------------------------------
    [email protected]                           [email protected]
    [email protected]                             [email protected]
    [email protected]                     [email protected]
    [email protected]_domaindotorg
    

    同じデータを使用して、REGEXP_LIKE

    を使用して、有効な電子メールアドレスのみを制限するクエリを次に示します。
    SQL> column email_address format a40
    SQL> column substr_result format a30
    SQL> SELECT  email_address
      2    FROM  email
      3   WHERE  REGEXP_LIKE (email_address, '[a-zA-Z0-9._%-][email protected][a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}');
    
    EMAIL_ADDRESS
    ----------------------------------------
    [email protected]
    [email protected]
    [email protected]
    

    SQLリファレンス> regexpが正規表現のサポートを確認するため。



    1. NULLを許可するようにMySQL列を変更するにはどうすればよいですか?

    2. 複数列のMySQLSelectステートメントDISTINCT

    3. MySQLの半径に応じて、バウンディングボックス内の長い/緯度のポイントをマージします

    4. Oracle DatabaseConfigurationAssistantを使用して空のデータベースを作成する