ใช้ CASE WHEN หรือการแปลงชนิดข้อมูล เพื่อค้นหาตัวเลขนำหน้าใน VARCHAR
ตัวอย่างการใช้งาน
1. สร้างตารางอีเมลขึ้นต้นด้วยตัวเลข
mysql> CREATE TABLE DemoTable (Title VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES ('9John@example.com'), ('3Carol@gmail.com');
2. ค้นหาที่ขึ้นต้นด้วย 9
mysql> SELECT
-> CASE WHEN Title = 9 THEN 'Search Successful' ELSE 'Search Unsuccessful' END AS Result
-> FROM DemoTable;
ผลลัพธ์
+---------------------+ | Result | +---------------------+ | Search Successful | | Search Unsuccessful | +---------------------+
คำอธิบาย: ทำไม Title = 9 ใช้ได้?
MySQL ทำ Implicit Conversion แปลงสตริงเป็นตัวเลขอัตโนมัติ:
'9John@example.com' = 9→ MySQL อ่านตัวเลขนำหน้า → 9 = 9 → TRUE'3Carol@gmail.com' = 9→ อ่านได้ 3 → 3 = 9 → FALSE
วิธีที่ชัดเจนและปลอดภัยกว่า
1. ใช้ SUBSTRING + CAST
SELECT * FROM DemoTable WHERE CAST(SUBSTRING(Title, 1, 1) AS UNSIGNED) = 9;
2. ใช้ REGEXP
SELECT * FROM DemoTable WHERE Title REGEXP '^9';
3. ใช้ LEFT()
SELECT * FROM DemoTable WHERE LEFT(Title, 1) = '9';
คำเตือน
- Implicit Conversion ให้ Warning:
Truncated incorrect DOUBLE value - ไม่สามารถใช้ Index ได้ → ช้า
- แนะนำใช้ REGEXP หรือ LEFT() แทน