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

วิธีตรวจสอบความคล้ายคลึงระหว่างสตริง 2 ค่าใน MySQL ด้วย STRCMP

MySQL มีฟังก์ชัน STRCMP(str1, str2) สำหรับเปรียบเทียบสตริง 2 ค่า คืนค่าเป็นตัวเลขตามเงื่อนไข

กฎการคืนค่า

เงื่อนไขค่าที่คืนความหมาย
str1 = str20เท่ากัน
str1 < str2 (Lexicographically)-1str1 น้อยกว่า str2
str1 > str2 (Lexicographically)1str1 มากกว่า str2

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

Case 1: สตริงเท่ากัน

SELECT STRCMP('demo', 'demo');
-- ผลลัพธ์: 0

Case 2: str1 น้อยกว่า str2

SELECT STRCMP('demo', 'demo1234');
-- ผลลัพธ์: -1

Case 3: str1 มากกว่า str2

SELECT STRCMP('demo1', 'demo');
-- ผลลัพธ์: 1

การประยุกต์ใช้

1. เรียงลำดับแบบ Custom

SELECT * FROM products
ORDER BY STRCMP(category, 'premium'), name;

2. เงื่อนไขใน WHERE

SELECT * FROM users
WHERE STRCMP(status, 'active') = 0;

3. Case-Insensitive Comparison (ใช้ COLLATE)

SELECT STRCMP('ABC', 'abc');              -- ผลลัพธ์: -1 (Case-sensitive)
SELECT STRCMP('ABC', 'abc' COLLATE utf8mb4_general_ci);  -- ผลลัพธ์: 0

ฟังก์ชันคล้ายคลึง

  • strcmp() - เปรียบเทียบแบบ Binary (Case-sensitive)
  • STRCMP() - เหมือน strcmp แต่เป็น Function ชื่อใหญ่
  • LIKE - Pattern Matching
  • SOUNDEX() - เปรียบเทียบเสียง (Phonetic)
  • LEVENSHTEIN() - ต้องติดตั้ง Plugin (Edit Distance)

ข้อจำกัด

  • เปรียบเทียบได้แค่ 2 ค่า ตรงๆ ไม่รองรับ Fuzzy Match
  • Case-sensitive โดย Default (ขึ้นกับ Collation)
  • ไม่ใช่ Similarity Score (0-100%) ใช้ Full-text Search หรือ Algorithm อื่นแทน