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

MySQL: กรองข้อมูลไม่ให้มีเลขท้าย 3 หลักที่กำหนด (NOT IN + RIGHT)

การใช้ RIGHT() กับ NOT IN

รวม RIGHT(str, 3) ดึง 3 หลักสุดท้าย และ NOT IN (...) เพื่อตัดค่าที่ไม่ต้องการ

ตัวอย่าง

mysql> create table DemoTable(Value int);
Query OK, 0 rows affected (0.71 sec)
mysql> insert into DemoTable values(1234);
mysql> insert into DemoTable values(2345);
mysql> insert into DemoTable values(7896);
mysql> insert into DemoTable values(4321);

ตัดทิ้งเลขท้าย 234 และ 321

mysql> select * from DemoTable where right(Value, 3) NOT IN ('234', '321');

ผลลัพธ์ (เหลือ 2345 และ 7896):

+-------+
| Value |
+-------+
| 2345  |
| 7896  |
+-------+

คำอธิบาย

  • RIGHT(1234, 3) = '234' -> ตัดออก (อยู่ใน NOT IN)
  • RIGHT(2345, 3) = '345' -> คงไว้
  • RIGHT(7896, 3) = '896' -> คงไว้
  • RIGHT(4321, 3) = '321' -> ตัดออก

ข้อควรระวัง: ชนิดข้อมูล

-- ถ้า Value เป็น INT ต้อง CAST ก่อน
WHERE RIGHT(CAST(Value AS CHAR), 3) NOT IN ('234', '321')

สรุป

ใช้ WHERE RIGHT(CAST(col AS CHAR), 3) NOT IN ('xxx', 'yyy') เพื่อตัดแถวที่มีเลขท้าย 3 หลักตรงกับรายการ запрещенных