0
例: ユーザーが AadhaarカードまたはPassportという2つのIDプルーフのいずれかを入力できるようにテーブルを作成します。 形式: Aadhaarカード:NNNN NNNN NNNN パスポート:ANNNNNN、Aはアルファベット、Nは番号です。 ユーザーが間違った形式を入力した場合、入力は受け入れられません。どのように私は指定された正規表現の形式でSQLクエリでユーザー入力の形式を確認できますか?
例: ユーザーが AadhaarカードまたはPassportという2つのIDプルーフのいずれかを入力できるようにテーブルを作成します。 形式: Aadhaarカード:NNNN NNNN NNNN パスポート:ANNNNNN、Aはアルファベット、Nは番号です。 ユーザーが間違った形式を入力した場合、入力は受け入れられません。どのように私は指定された正規表現の形式でSQLクエリでユーザー入力の形式を確認できますか?
他の場所(フロントエンドアプリケーションまたはビジネスロジックレイヤーのいずれか)でユーザー入力を検証するのが、データベースにはないことを確認することをお勧めします。
これまで述べてきたように、受信データを検証したり、トリガを使用してデータを変更したりすることは可能です。たとえば:
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
に挿入し、正規表現を使用してcard
とpassport
列のフォーマットをチェックしてみ行ごとに実行されます。形式が無効な場合、エラーがスローされ、行は挿入されません。
ようこそ。これまでに試したことを示す最小限のコードサンプルを含めてください。このデータベースの前にUIがありますか?もしそうなら、あなたが使っているプログラミング言語とそれについて何か言いなさい。 – yacc