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

ตรวจสอบค่าเป็น Integer ใน MySQL (CAST / REGEXP)

ใช้ CAST(value AS UNSIGNED) หรือ REGEXP เพื่อเช็คว่าค่าเป็น Integer จริงๆ

วิธีที่ 1: CAST()

mysql> SELECT CAST('John123456' AS UNSIGNED);  -- 0 (ไม่ใช่ตัวเลข)
mysql> SELECT CAST('123456' AS UNSIGNED);      -- 123456 (เป็นตัวเลข)
mysql> SELECT CAST('78.90' AS UNSIGNED);       -- 78 (Float → Truncate)

Logic: ไม่ใช่ตัวเลข → คืน 0 | เป็นตัวเลข → คืนค่าตัวเลข (ตัดทศนิยม)

วิธีที่ 2: REGEXP (แม่นยำกว่า สำหรับ Integer เท่านั้น)

mysql> CREATE TABLE CheckingIntegerDemo (Value VARCHAR(200));
mysql> INSERT INTO CheckingIntegerDemo VALUES ('John123456'), ('123456'), ('123.456');

mysql> SELECT Value FROM CheckingIntegerDemo 
    -> WHERE Value REGEXP '^-?[0-9]+$';

ผลลัพธ์ (ได้เฉพาะ Integer จริง):

+--------+
| Value  |
+--------+
| 123456 |
+--------+

อธิบาย Regex: ^-?[0-9]+$

  • ^ เริ่มต้น String
  • -? ตัวลบได้ 0 หรือ 1 ตัว
  • [0-9]+ ตัวเลข 1 ตัวขึ้นไป
  • $ จบ String

กรณี Float ที่ต้องการยอมรับ

-- รับ Float ได้ (มีจุดทศนิยม)
WHERE Value REGEXP '^-?[0-9]+(\.[0-9]+)?$'
แนะนำ: ใช้ REGEXP สำหรับ Validation ก่อน Insert/Update ใช้ CAST สำหรับ Convert เหลือแต่ตัวเลข (ตัดทศนิยม)