เพื่อตรวจสอบว่าค่าที่กำหนดเป็นสตริงหรือไม่ เราใช้ฟังก์ชัน cast() หากค่าไม่ใช่ตัวเลข จะส่งกลับ 0 มิฉะนั้นจะคืนค่าที่เป็นตัวเลข ด้วยวิธีนี้เราสามารถตรวจสอบได้ว่าค่านั้นเป็นจำนวนเต็มหรือไม่
กรณีที่ 1 − ตรวจสอบสตริงที่มีจำนวนเต็ม
mysql> select cast('John123456' AS UNSIGNED);
ต่อไปนี้เป็นผลลัพธ์ แสดงว่าค่าไม่ใช่ตัวเลข ดังนั้นจึงส่งกลับค่า 0
<ก่อนหน้า>+--------------------------------+| cast('John123456' ตามที่ไม่ได้ลงนาม) |+--------------------------------+| 0 |+--------------------------------+1 แถวในชุด, 1 คำเตือน (0.00 วินาที)กรณีที่ 2 – ตรวจสอบเฉพาะค่าจำนวนเต็ม
mysql> เลือก cast('123456' ตามที่ไม่ได้ลงนาม);
ต่อไปนี้เป็นผลลัพธ์ แสดงว่าค่าเป็นตัวเลข ดังนั้นจึงคืนค่ามาเอง
<ก่อนหน้า>+---------------------------+| cast('123456' ตามที่ยังไม่ได้ลงนาม) |+--------------------------+| 123456 |+---------------------------+1 แถวในชุด (0.00 วินาที)ตรรกะนี้ใช้ได้ดีกับ float เช่นกัน
ต่อไปนี้เป็นแบบสอบถามที่มีค่าทศนิยม
mysql> เลือก CAST('78.90' ตามที่ไม่ได้ลงนาม);
นี่คือผลลัพธ์
<ก่อนหน้า>+---------------------------+| CAST('78.90' ตามที่ไม่ได้ลงนาม) |+--------------------------+| 78 |+--------------------------+1 แถวในชุด, 1 คำเตือน (0.00 วินาที)ตรรกะสำรองกับโอเปอเรเตอร์ปกติ
มันใช้ได้กับทุกเงื่อนไขสำหรับค่าใด ๆ แม้กระทั่งแบบลอยตัว
เรามาสร้างตารางใหม่กันเถอะ
mysql> สร้างตาราง CheckingIntegerDemo -> ( -> Value varchar(200) -> );ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.88 วินาที)
กำลังแทรกระเบียนลงในตาราง
mysql> แทรกลงในค่า CheckingIntegerDemo ('John123456'); Query OK, 1 แถวได้รับผลกระทบ (0.10 วินาที)mysql> แทรกลงในค่า CheckingIntegerDemo ('123456'); Query OK, 1 แถวได้รับผลกระทบ (0.16 วินาที)mysql> แทรก ลงในค่า CheckingIntegerDemo ('123.456'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.16 วินาที)
เพื่อแสดงรายการทั้งหมด
mysql> เลือก *จาก CheckingIntegerDemo;
นี่คือผลลัพธ์
<ก่อนหน้า>+-----------+| ค่า |+-----------+| John123456 || 123456 || 123.456 |+-----------+3 แถวในชุด (0.00 วินาทีในผลลัพธ์ข้างต้น มีเพียง 123456 เท่านั้นที่เป็นจำนวนเต็ม ส่วนที่เหลือไม่ใช่
ไวยากรณ์เพื่อตรวจสอบว่าค่าเป็นจำนวนเต็มหรือไม่
เลือก yourColumnName จาก yourTableName โดยที่ yourColumnName REGEXP '^-?[0-9]+$';
แบบสอบถามที่เราใช้นิพจน์ทั่วไป ซึ่งจะส่งออกเฉพาะค่าจำนวนเต็ม
mysql> เลือกค่าจาก CheckingIntegerDemo โดยที่ Value REGEXP '^-?[0-9]+$';
ต่อไปนี้เป็นผลลัพธ์
<ก่อนหน้า>+---------+| ค่า |+-------+| 123456 |+--------+1 แถวในชุด (0.00 วินาที)