I have following data in table:
+----------------------+----------------------------------------------------------+--------------+
| subscriber_fields_id | name | field_type |
+----------------------+----------------------------------------------------------+--------------+
| 143 | Peshawar/Islamabad/Lahore/Swat/Mardan/Karachi | Job Location |
| 146 | Karachi | Job Location |
| 147 | Lahore and Karachi | Job Location |
| 149 | Karachi, Mirpur Khas, Sukkur, Layyah, Gilgit, Charsaddah | Job Location |
| 152 | Islamabad or Lahore | Job Location |
| 155 | Islamabad | Job Location |
| 157 | 7 Districts of Sindh and Karachi | Job Location |
+----------------------+----------------------------------------------------------+--------------+
My query is:
select * from subscriberfields
where name like '%Khairpur,Islamabad,Karachi%';
Result:
+----------------------+-----------------------------------------------+--------------+
| subscriber_fields_id | name | field_type |
+----------------------+-----------------------------------------------+--------------+
| 143 | Peshawar/Islamabad/Lahore/Swat/Mardan/Karachi | Job Location |
| 152 | Islamabad or Lahore | Job Location |
| 155 | Islamabad | Job Location |
+----------------------+-----------------------------------------------+--------------+
It should return all rows where the name includes Islamabad, Khairpur or Karachi but it is not.
WHERE name LIKE '%Khairpur%' OR name LIKE .... However, it is not sargable and therefore will require a full table scan—it will become desperately inefficient as the table size grows. You should consider using fulltext search instead.SIMILAR TOlike I've suggested in the answer?SIMILAR TO, it's an utterly pointless construct - there is always a better option. I added an answer.