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

ดึงแถวที่อักขระตัวแรกไม่ใช่ตัวอักษรและตัวเลขใน MySQL?


หากต้องการดึงแถวที่อักขระตัวแรกไม่ใช่ตัวอักษรผสมตัวเลข คุณสามารถใช้นิพจน์ทั่วไปต่อไปนี้ได้

กรณีที่ 1 − ถ้าคุณต้องการแถวที่เริ่มต้นจากตัวเลข คุณสามารถใช้ไวยากรณ์ต่อไปนี้ -

SELECT *FROM yourTableNameWHERE yourColumnName REGEXP '^[0-9]';

กรณีที่ 2 − ถ้าคุณต้องการแถวที่เริ่มต้นจากตัวอักษรและตัวเลข ให้ใช้ไวยากรณ์ต่อไปนี้ −

SELECT *FROM yourTableNameWHERE yourColumnName REGEXP '^[^0-9A-Za-z]';

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง getRowsFirstNotAlphanumeric-> (-> Id int ไม่ใช่ NULL AUTO_INCREMENT,-> UserPassword varchar(20),-> PRIMARY KEY(Id)-> );Query OK, 0 แถวได้รับผลกระทบ (0.61 วินาที) 

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

mysql> แทรกลงในค่า getRowsFirstNotAlphanumeric(UserPassword) ('@123456'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที)mysql> แทรกลงในค่า getRowsFirstNotAlphanumeric(UserPassword) ('#7666666'); แบบสอบถามตกลง 1 แถว ได้รับผลกระทบ (0.22 วินาที) mysql> แทรกลงในค่า getRowsFirstNotAlphanumeric (UserPassword) ('98876Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า getRowsFirstNotAlphanumeric (UserPassword) ('$12345Carol'); แบบสอบถามตกลง 1 แถวที่ได้รับผลกระทบ (0.09 วินาที) mysql> แทรกลงในค่า getRowsFirstNotAlphanumeric (UserPassword) ('%David567'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที) mysql> แทรกลงในค่า getRowsFirstNotAlphanumeric (UserPassword) ('123456Larry'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.07 วินาที) mysql> แทรกลงในค่า getRowsFirstNotAlphalecommunications 1 แถวได้รับผลกระทบ (0.09 วินาที) mysql> แทรกลงใน getRowsFirstNotAlphanumeric(UserPassword) va lues('_123456Bob');Query OK, 1 แถวได้รับผลกระทบ (0.10 วินาที)mysql> แทรกลงในค่า getRowsFirstNotAlphanumeric(UserPassword) ('5767676Chris'); Query OK, 1 แถวได้รับผลกระทบ (0.10 วินาที)mysql> แทรกลงใน getRowsFirstNotAlphanumeric(UserPassword) values('(88883Mike');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.11 วินาที)

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

mysql> เลือก *จาก getRowsFirstNotAlphanumeric;

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

<ก่อนหน้า>+----+--------------+| รหัส | รหัสผ่านผู้ใช้ |+----+------------+| 1 | @123456 || 2 | #76666666 || 3 | 98876แครอล || 4 | $12345แครอล || 5 | %David567 || 6 | 123456ลาร์รี่ || 7 | 909โรเบิร์ต || 8 | 3333แมกซ์เวลล์ || 9 | _123456บ๊อบ || 10 | 5767676คริส || 11 | (88883Mike |+-----------+--------------+11 แถวในชุด (0.00 วินาที)

กรณีที่ 1 −นี่คือแบบสอบถามเพื่อรับแถวทั้งหมดที่ไม่ได้เริ่มจากตัวอักษรและตัวเลข -

mysql> SELECT *FROM getRowsFirstNotAlphanumeric-> WHERE UserPassword REGEXP '^[0-9]';

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

<ก่อนหน้า>+----+--------------+| รหัส | รหัสผ่านผู้ใช้ |+----+------------+| 3 | 98876แครอล || 6 | 123456ลาร์รี่ || 7 | 909โรเบิร์ต || 8 | 3333แมกซ์เวลล์ || 10 | 5767676คริส |+----+--------------------+5 แถวในชุด (0.00 วินาที)

กรณีที่ 2: นี่คือแบบสอบถามเพื่อรับแถวทั้งหมดที่เริ่มต้นจากตัวอักษรและตัวเลข:

mysql> เลือก *FROM getRowsFirstNotAlphanumeric-> โดยที่ UserPassword REGEXP '^[^0-9A-Za-z]';

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

<ก่อนหน้า>+----+--------------+| รหัส | รหัสผ่านผู้ใช้ |+----+------------+| 1 | @123456 || 2 | #76666666 || 4 | $12345แครอล || 5 | %David567 || 9 | _123456บ๊อบ || 11 | (88883Mike |+-----------+--------------+6 แถวในชุด (0.00 วินาที)