Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách kiểm tra giá trị có phải số nguyên trong MySQL?


Cách 1: Dùng CAST()

CAST('chuoi' AS UNSIGNED) trả về 0 nếu không phải số, trả về số nếu là số.

mysql> SELECT CAST('John123456' AS UNSIGNED);
+--------------------------------+
| CAST('John123456' AS UNSIGNED) |
+--------------------------------+
| 0                              |
+--------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> SELECT CAST('123456' AS UNSIGNED);
+----------------------------+
| CAST('123456' AS UNSIGNED) |
+----------------------------+
| 123456                     |
+----------------------------+
1 row in set (0.00 sec)

Cũng áp dụng cho float: CAST('78.90' AS UNSIGNED) → 78 (cảnh báo).

Cách 2: Dùng REGEXP (chính xác hơn)

mysql> CREATE TABLE CheckingIntegerDemo (Value VARCHAR(200));
Query OK, 0 rows affected (0.88 sec)
mysql> INSERT INTO CheckingIntegerDemo VALUES('John123456'),('123456'),('123.456');
Query OK, 3 rows affected (0.16 sec)
mysql> SELECT Value FROM CheckingIntegerDemo
    -> WHERE Value REGEXP '^-?[0-9]+$';
+--------+
| Value  |
+--------+
| 123456 |
+--------+
1 row in set (0.00 sec)

Regex ^-?[0-9]+$ chỉ khớp số nguyên (có thể âm), loại trừ float và chuỗi chữ.