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

MySQL ใช้ LIKE และ CHAR_LENGTH() ร่วมกันใน Query เดียว

สามารถรวมเงื่อนไข LIKE (ค้นหาข้อความ) และ CHAR_LENGTH() (ตรวจสอบความยาวข้อความ) ในคำสั่ง WHERE เดียวกันได้

ตัวอย่างการใช้งาน

1. สร้างตาราง

mysql> CREATE TABLE DemoTable (
    Name VARCHAR(20)
);
Query OK, 0 rows affected (0.49 sec)

2. เพิ่มข้อมูลทดสอบ

mysql> INSERT INTO DemoTable VALUES('Chris Brown');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('Adam Smith');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('John Smith');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Carol Smith');
Query OK, 1 row affected (0.13 sec)

3. แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;
+-------------+
| Name        |
+-------------+
| Chris Brown |
| Adam Smith  |
| John Smith  |
| Carol Smith |
+-------------+

4. ค้นหาชื่อที่มี 'Smith' และความยาวน้อยกว่า 11 ตัวอักษร

mysql> SELECT * FROM DemoTable
    -> WHERE Name LIKE '%Smith%'
    -> AND CHAR_LENGTH(Name) < 11;

5. ผลลัพธ์

+------------+
| Name       |
+------------+
| Adam Smith |
| John Smith |
+------------+

คำอธิบาย

  • LIKE '%Smith%' : ค้นหาชื่อที่มีคำว่า "Smith" อยู่ตรงไหนก็ได้ในสตริง
  • CHAR_LENGTH(Name) < 11 : กรองเฉพาะชื่อที่มีความยาวน้อยกว่า 11 ตัวอักษร
  • Adam Smith = 10 ตัวอักษร ✓, John Smith = 10 ตัวอักษร ✓, Carol Smith = 11 ตัวอักษร ✗

ฟังก์ชันความยาวสตริงใน MySQL

ฟังก์ชันคำอธิบาย
CHAR_LENGTH(str)นับจำนวน ตัวอักษร (Character) - รองรับ Unicode/UTF-8
LENGTH(str)นับจำนวน ไบต์ (Byte) - 1 ตัวอักษรไทย = 3 ไบต์

สรุป

ใช้ LIKE และ CHAR_LENGTH() ร่วมกันใน WHERE ได้โดยตรง เหมาะสำหรับการกรองข้อมูลข้อความที่มีเงื่อนไขทั้ง "มีคำเฉพาะ" และ "ความยาวอยู่ในช่วงที่ต้องการ"