คำสั่ง BETWEEN ใน MySQL ทำงานกับชนิดข้อมูล VARCHAR ได้โดยเปรียบเทียบตามลำดับ Lexicographical (ตัวอักษร) ซึ่งใช้ได้กับรหัสที่มีรูปแบบคงที่ (เช่น EMP_001, EMP_002) เพื่อค้นหาช่วงรหัส
ตัวอย่างการใช้งาน
สร้างตารางรหัสพนักงาน:
mysql> CREATE TABLE DemoTable1473 (EmployeeCode VARCHAR(20));
เพิ่มข้อมูล:
mysql> INSERT INTO DemoTable1473 VALUES ('EMP_120'), ('EMP_125'), ('EMP_30'), ('EMP_130');
ดูข้อมูล:
mysql> SELECT * FROM DemoTable1473; +--------------+ | EmployeeCode | +--------------+ | EMP_120 | | EMP_125 | | EMP_30 | | EMP_130 | +--------------+
ค้นหารหัสระหว่าง EMP_124 ถึง EMP_129:
mysql> SELECT * FROM DemoTable1473
-> WHERE EmployeeCode BETWEEN 'EMP_124' AND 'EMP_129';
ผลลัพธ์ (เจอ EMP_125):
+--------------+ | EmployeeCode | +--------------+ | EMP_125 | +--------------+
หลักการเปรียบเทียบ String
- เปรียบเทียบทีละตัวอักษรจากซ้ายไปขวา
- 'EMP_124' < 'EMP_125' < 'EMP_129' < 'EMP_130' ✓
- 'EMP_30' < 'EMP_120' เพราะ '3' > '1' ตำแหน่งที่ 5 ✗ (Logic ตัวเลขแตกต่าง String)
ข้อควรระวัง: Zero Padding สำคัญมาก
| รูปแบบ | ตัวอย่าง | BETWEEN 'EMP_124' AND 'EMP_129' |
|---|---|---|
| Zero-padded (Good) | EMP_030, EMP_120, EMP_125 | ทำงานถูกต้อง |
| No padding (Bad) | EMP_30, EMP_120, EMP_125 | EMP_30 จะอยู่ "หลัง" EMP_129 ผิดพลาด! |