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

ค้นหาตัวเลขในคอลัมน์ VARCHAR ของ MySQL

ใช้ 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() แทน