Bazen LIKE cümlelerde özel bir kelime ararken yanlış sonuçlar döndürebilir. Örnek olarak LIKE '%php%' konutu. Bu problemi çözmek için find_in_set() fonksiyonu kullanılır.


Örnek veriler


mysql> SELECT id, category FROM post;
+----+-----------------+
| id | category |
+----+-----------------+
| 1 | SYMFONY,PHPSPEC |
| 3 | GIT,PHP,LINUX |
| 9 | PHP |
| 10 | PHP,A |
| 11 | A,PHP |
| 12 | A,PHP,B |
| 73 | LINUX,PHP |
| 74 | LINUX,PHP |
| 77 | LINUX,PHING,PHP |
| 78 | LINUX,PHING,PHP |
+----+-----------------+
10 rows in set (0.00 sec)

LIKE clause


Birinci sıradaki istediğimiz bir kayıt değil bu nedenle sonuç yanlış.


mysql> SELECT id, category FROM post WHERE category LIKE '%php%';
+----+-----------------+
| id | category |
+----+-----------------+
| 1 | SYMFONY,PHPSPEC |
| 3 | GIT,PHP,LINUX |
| 9 | PHP |
| 10 | PHP,A |
| 11 | A,PHP |
| 12 | A,PHP,B |
| 73 | LINUX,PHP |
| 74 | LINUX,PHP |
| 77 | LINUX,PHING,PHP |
| 78 | LINUX,PHING,PHP |
+----+-----------------+
10 rows in set (0.00 sec)

find_in_set() fonksiyonu


mysql> SELECT id, category FROM post WHERE find_in_set('PHP', category) <> 0;
+----+-----------------+
| id | category |
+----+-----------------+
| 3 | GIT,PHP,LINUX |
| 9 | PHP |
| 10 | PHP,A |
| 11 | A,PHP |
| 12 | A,PHP,B |
| 73 | LINUX,PHP |
| 74 | LINUX,PHP |
| 77 | LINUX,PHING,PHP |
| 78 | LINUX,PHING,PHP |
+----+-----------------+
9 rows in set (0.00 sec)