ใช้ LIKE และ NOT LIKE กรองรูปแบบ Hyphen แบบแม่นยำ
รวมเงื่อนไข LIKE '%--%' (มี -- อย่างน้อย 1 คู่) และ NOT LIKE '%---%' (ไม่มี --- 3 ตัวติดกัน) เพื่อกรองเฉพาะที่มี Hyphen 2 ตัวติดกันพอดี
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Password VARCHAR(100)
);
INSERT INTO DemoTable (Password) VALUES
('John@--123'), ('---Carol234'), ('--David987'), ('Mike----53443');
ข้อมูลในตาราง
+----+---------------+ | Id | Password | +----+---------------+ | 1 | John@--123 | | 2 | ---Carol234 | | 3 | --David987 | | 4 | Mike----53443 | +----+---------------+
คำสั่งค้นหาที่มี -- แต่มิได้ ---
SELECT * FROM DemoTable WHERE Password LIKE '%--%' AND Password NOT LIKE '%---%';
ผลลัพธ์
+----+------------+ | Id | Password | +----+------------+ | 1 | John@--123 | | 3 | --David987 | +----+------------+
คำอธิบาย:
LIKE '%--%'ตรงกับ -- อยู่ที่ไหนก็ได้ (Id 1, 2, 3, 4)NOT LIKE '%---%'ตัดออกที่มี --- ติดกัน 3 ตัว (Id 2, 4)- เหลือ Id 1 (มี -- 1 คู่) และ Id 3 (มี -- 1 คู่)
⚠ ข้อจำกัด: วิธีนี้กรองได้เฉพาะ "ไม่มี 3 ตัวติดกัน" แต่ไม่ตรวจสอบ "มีทั้งหมด 2 ตัวพอดี" (เช่น '--a--b--' มี 3 คู่ ก็จะผ่าน)
วิธีแม่นยำกว่า (MySQL 8.0+): ใช้ REGEXP
WHERE Password REGEXP '--' AND Password NOT REGEXP '---'
หรือนับจำนวน Hyphen ด้วย CHAR_LENGTH(Password) - CHAR_LENGTH(REPLACE(Password, '-', '')) = 2