MySQL 中可以強制使用正規表示式進行資料驗證嗎?
驗證資料對於確保資料完整性至關重要。正規表示式 (regex) 提供了定義約束的彈性。 MySQL 可以利用正規表示式進行資料驗證嗎?
是的,MySQL 支援正規表示式進行資料驗證。 值得注意的是,它不支援資料驗證的 CHECK 限制。相反,應該使用觸發器。
例如,您可以使用觸發器為電話列建立檢查約束:
CREATE TRIGGER trig_phone_check BEFORE INSERT ON data FOR EACH ROW BEGIN IF (NEW.phone REGEXP '^(\+?[0-9]{1,4}-)?[0-9]{3,10}$' ) = 0 THEN SIGNAL SQLSTATE '12345' SET MESSAGE_TEXT = 'Wroooong!!!'; END IF; END$$
此觸發器檢查傳入的電話號碼是否與指定的符合正規表示式。如果不匹配,則會發出錯誤信號並設定自訂錯誤訊息。
INSERT INTO data VALUES ('+64-221221442'); -- should be OK INSERT INTO data VALUES ('+64-22122 WRONG 1442'); -- will fail with the error: #1644 - Wroooong!!!
但是,不建議只依賴 MySQL 進行資料驗證。應在應用程式的多個層級驗證數據,以實現最佳數據完整性。
以上是MySQL中可以實現正規表示式的資料驗證嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!