Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah Mungkin untuk Menegakkan Pemeriksaan Data di MySQL menggunakan ekspresi Reguler

Ya kamu bisa. MySQL mendukung regex (http://dev.mysql.com/doc /refman/5.6/en/regexp.html ) dan untuk validasi data Anda harus menggunakan pemicu karena MySQL tidak mendukung batasan CHECK (Anda selalu dapat pindah ke PostgreSQL sebagai alternatif :). catatan! Ketahuilah bahwa meskipun MySQL memiliki konstruk kendala CHECK, sayangnya MySQL (sejauh ini 5.6) tidak memvalidasi data terhadap kendala cek. Menurut http://dev.mysql.com/doc /refman/5.6/en/create-table.html :"Klausa CHECK diurai tetapi diabaikan oleh semua mesin penyimpanan."

Anda dapat menambahkan batasan centang untuk kolom telepon :

CREATE TABLE data (
  phone varchar(100)
);

DELIMITER $$
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$$
DELIMITER ;


INSERT INTO data VALUES ('+64-221221442'); -- should be OK
INSERT INTO data VALUES ('+64-22122 WRONG 1442'); -- will fail with the error: #1644 - Wroooong!!! 

Namun Anda tidak boleh hanya mengandalkan MySQL (lapisan data dalam kasus Anda) untuk validasi data. Data harus divalidasi di semua level aplikasi Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa mensimulasikan variabel array di MySQL?

  2. Pilih baris terakhir di MySQL

  3. Sekilas tentang Fungsi Numerik SQL Server

  4. Bisakah saya mencampur API MySQL di PHP?

  5. Kunci asing MySQL InnoDB antara database yang berbeda