ใช้ 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 ครั้งขึ้นไป (*) - ไม่อนุญาตให้มีอักขระอื่น