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

ดึงเฉพาะตัวเลขด้วย REGEXP ใน MySQL


ใช้ Regular Expression ^[0-9]*$ ใน WHERE clause เพื่อดึงแถวที่มีเฉพาะตัวเลขเท่านั้น

รูปแบบ Regular Expression

  • กรณีที่ 1 - ต้องเป็นตัวเลข 10 หลักพอดี: REGEXP '^[0-9]{10}$' หรือ REGEXP '^[[:digit:]]{10}$'
  • กรณีที่ 2 - ตัวเลข 1 หลักขึ้นไป (เฉพาะตัวเลข): REGEXP '^[0-9]*$'

ตัวอย่างการใช้งาน

สร้างตารางและเพิ่มข้อมูล UserId ผสมตัวเลขและตัวอักษร:

INSERT INTO OnlyDigits(UserId, UserName) VALUES('123User1','John'),('3445User2','Carol'),('145363User3','Mike'),('13455User4','Larry'),('123555User5','Sam'),('596766User6','David'),('96977User7','Robert'),('99999User8','James'),('9999999','James'),('153545','Maxwell'),('9999986787','Johnson');

กรณีที่ 1: ค้นหา UserId ที่เป็นตัวเลข 10 หลักพอดี

mysql> SELECT * FROM OnlyDigits WHERE UserId REGEXP '^[0-9]{10}$';
+----+------------+----------+ | Id | UserId     | UserName | +----+------------+----------+ | 11 | 9999986787 | Johnson  | +----+------------+----------+

กรณีที่ 2: ค้นหา UserId ที่เป็นเฉพาะตัวเลข (1 หลักขึ้นไป)

mysql> SELECT * FROM OnlyDigits WHERE UserId REGEXP '^[0-9]*$';
+----+------------+----------+ | Id | UserId     | UserName | +----+------------+----------+ | 9  | 9999999    | James    | | 10 | 153545     | Maxwell  | | 11 | 9999986787 | Johnson  | +----+------------+----------+

Regex ^[0-9]*$ หมายถึง เริ่มต้น (^) จบ ($) ด้วยตัวเลข 0-9 ซ้ำ 0 ครั้งขึ้นไป (*) - ไม่อนุญาตให้มีอักขระอื่น