2017-09-09 8 views
0

例: ユーザーが AadhaarカードまたはPassportという2つのIDプルーフのいずれかを入力できるようにテーブルを作成します。 形式: Aadhaarカード:NNNN NNNN NNNN パスポート:ANNNNNN、Aはアルファベット、Nは番号です。 ユーザーが間違った形式を入力した場合、入力は受け入れられません。どのように私は指定された正規表現の形式でSQLクエリでユーザー入力の形式を確認できますか?

+0

ようこそ。これまでに試したことを示す最小限のコードサンプルを含めてください。このデータベースの前にUIがありますか?もしそうなら、あなたが使っているプログラミング言語とそれについて何か言いなさい。 – yacc

答えて

0

他の場所(フロントエンドアプリケーションまたはビジネスロジックレイヤーのいずれか)でユーザー入力を検証するのが、データベースにはないことを確認することをお勧めします。

これまで述べてきたように、受信データを検証したり、トリガを使用してデータを変更したりすることは可能です。たとえば:

DELIMITER $$ 
CREATE TRIGGER checkInputFormat 
    BEFORE INSERT ON yourTable FOR EACH ROW 
    BEGIN 
     IF (NEW.card IS NULL AND NEW.passport IS NULL) THEN 
      SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'No identity provided'; 
     END IF; 

     IF (NEW.card IS NOT NULL AND NEW.card NOT REGEXP '^(\d{4}){2}\d{4}$') THEN 
      SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid card format'; 
     END IF; 

     IF (NEW.passport IS NOT NULL AND NEW.passport NOT REGEXP '^[A-Za-z]\d{6}$') THEN 
      SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid passport format'; 
     END IF; 
    END; 
$$ 
DELIMITER ; 

このトリガーは、あなたがyourTableに挿入し、正規表現を使用してcardpassport列のフォーマットをチェックしてみ行ごとに実行されます。形式が無効な場合、エラーがスローされ、行は挿入されません。

関連する問題