Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या नियमित अभिव्यक्ति का उपयोग करके MySQL में डेटा जांच को लागू करना संभव है?

हाँ आप कर सकते हैं। MySQL रेगेक्स का समर्थन करता है (http://dev.mysql.com/doc /refman/5.6/hi/regexp.html ) और डेटा सत्यापन के लिए आपको एक ट्रिगर का उपयोग करना चाहिए क्योंकि MySQL CHECK बाधा का समर्थन नहीं करता है (आप हमेशा एक विकल्प के रूप में PostgreSQL पर जा सकते हैं :)। ध्यान दें! ध्यान रखें कि भले ही MySQL में CHECK बाधा निर्माण हो, दुर्भाग्य से MySQL (अब तक 5.6) चेक बाधाओं के विरुद्ध डेटा को मान्य नहीं करता है। http://dev.mysql.com/doc के अनुसार /refman/5.6/hi/create-table.html :"चेक क्लॉज को पार्स किया गया है लेकिन सभी स्टोरेज इंजनों ने इसे नजरअंदाज कर दिया है।"

आप फ़ोन . कॉलम के लिए चेक बाधा जोड़ सकते हैं :

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!!! 

हालाँकि आपको डेटा सत्यापन के लिए केवल MySQL (आपके मामले में डेटा परत) पर भरोसा नहीं करना चाहिए। डेटा को आपके ऐप के सभी स्तरों पर सत्यापित किया जाना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दी गई आईडी के लिए नवीनतम पंक्ति प्राप्त करें

  2. एक MySQL/MariaDB डेटाबेस निर्यात करें

  3. MySQL में पंक्तियाँ सम्मिलित करने के लिए क्वेरी सम्मिलित करें

  4. MySQL LOG2 () फ़ंक्शन - किसी मान का बेस -2 लघुगणक लौटाएं

  5. MySQL में अगला/पिछला रिकॉर्ड कैसे प्राप्त करें?