Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เป็นไปได้หรือไม่ที่จะบังคับใช้การตรวจสอบข้อมูลใน MySQL โดยใช้ Regular Expression?


ได้ เป็นไปได้ที่จะบังคับใช้การตรวจสอบข้อมูลใน MySQL โดยใช้นิพจน์ทั่วไป ขั้นแรก คุณต้องสร้างตาราง หลังจากนั้นคุณต้องสร้างทริกเกอร์ก่อนแทรกลงในตาราง เราจะตรวจสอบรูปแบบหมายเลขโทรศัพท์ที่นี่

แบบสอบถามเพื่อสร้างตารางมีดังนี้

mysql> สร้างตารางบังคับใช้DataUsingRegularExpression -> ( -> yourPhoneNumber varchar(60) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.59 วินาที)

แบบสอบถามเพื่อสร้างทริกเกอร์มีดังนี้

mysql> DELIMITER //mysql> CREATE TRIGGERforce_phone_check BEFORE INSERT ONforceDataUsingRegularExpression -> FOR EACH ROW -> BEGIN -> IF (NEW.yourPhoneNumber REGEXP '^(\\+?[0-9]{1,4} -)?[0-9]{3,10}$' ) =0 แล้ว -> SIGNAL SQLSTATE '33455' -> SET MESSAGE_TEXT ='หมายเลขโทรศัพท์ของคุณไม่ถูกต้อง'; -> สิ้นสุดถ้า; -> END // ตกลง 0 แถวได้รับผลกระทบ (0.16 วินาที) mysql> DELIMITER;

ตอนนี้ดูข้อผิดพลาดเมื่อคุณแทรกบันทึกในตารางเพื่อบังคับใช้การตรวจสอบข้อมูลใน MySQL โดยใช้นิพจน์ทั่วไป

mysql> แทรกลงในค่าforceDataUsingRegularExpression ("+55242-64576");ข้อผิดพลาด 1644 (33455):หมายเลขโทรศัพท์ของคุณไม่ถูกต้องmysql> แทรกลงในค่าforceDataUsingRegularExpression ("+76-WD1232221");ข้อผิดพลาด 1644 (33455):ของคุณ หมายเลขโทรศัพท์ไม่ถูกต้องขณะนี้กำลังแทรกข้อมูลที่ถูกต้อง เช่น โทรศัพท์ที่ถูกต้อง ซึ่งจะเป็นดังนี้:mysql> แทรกลงในค่าforceDataUsingRegularExpression("+55-1232221");แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.13 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select

แบบสอบถามมีดังนี้

mysql> เลือก *จากการบังคับใช้DataUsingRegularExpression;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+-----------------+| หมายเลขโทรศัพท์ของคุณ |+-----------------+| +55-1232221 |+----------------+1 แถวในชุด (0.00 วินาที)