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

ใช้ Regular Expression ค้นหาตัวเลขในสตริง MySQL

รูปแบบ Regex สำหรับตัวเลข

ใน MySQL ใช้ REGEXP (หรือ RLIKE) สำหรับ Pattern Matching:

SELECT * FROM yourTableName WHERE yourColumnName REGEXP '[0-9]';

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

mysql> CREATE TABLE DemoTable1841 (
    Code VARCHAR(20)
);

mysql> INSERT INTO DemoTable1841 VALUES('John231');
mysql> INSERT INTO DemoTable1841 VALUES('19876Sam');
mysql> INSERT INTO DemoTable1841 VALUES('Carol');
mysql> INSERT INTO DemoTable1841 VALUES('67474');

ค้นหาแถวที่มีตัวเลข

mysql> SELECT * FROM DemoTable1841 WHERE Code REGEXP '[0-9]';

ผลลัพธ์ (เฉพาะ Carol ที่ไม่มีตัวเลข):

+----------+
| Code     |
+----------+
| John231  |
| 19876Sam |
| 67474    |
+----------+

Pattern Regex ที่น่าสนใจ

Patternความหมาย
[0-9]มีตัวเลขอย่างน้อย 1 ตัว
^[0-9]+$เป็นตัวเลขทั้งหมด (Integer)
[0-9]{3}มีตัวเลขติดกัน 3 ตัว
^[0-9]{1,3}$ตัวเลข 1-3 หลัก
[0-9]+\\.[0-9]+รูปแบบทศนิยม

หมายเหตุ

  • MySQL ใช้ POSIX Regex (ไม่รองรับ \\d ต้องใช้ [0-9])
  • REGEXP ไม่สนใจ Case-sensitive โดยค่าเริ่มต้น
  • ใช้ REGEXP BINARY เพื่อ Case-sensitive
  • MySQL 8.0+ รองรับ REGEXP_REPLACE, REGEXP_SUBSTR ใหม่ๆ