🔎

Точний пошук слова LIKE SQL?

Допоможіть вирішити проблему з пошуком. Я роблю так:
`field` LIKE '%$search%'
Однак мені відображаються не лише точні збіги, але і схожі результати, наприклад, якщо шукаю слово it, виводяться it’s, write та інші. Але мені потрібно вивести лише точний збіг. Як це зробити?
sql
1 відповідь
  • Олег
    Використання LIKE для ваших цілей не дуже доречно, однак, якщо ви все ж таки хочете його використовувати, то алгоритм наступний:

    1. Додати пробіли спочатку та кінці пошукового слова: '% $search %' (щоб виключити збіги у середині слова);

    2. Додати також початковий та кінцевий пробіли у текст пошуку: CONCAT(' ', `field`, ' ') (щоб включити у результати початок та кінець рядка).

    Ваш код:
    CONCAT(' ', `field`, ' ') LIKE '% $search %'
    Але варто зауважити, що ваше слово може закінчуватися не лише пробілом, а й знаками оклику (!), запитання (?), тому можна використати регулярний вираз:
    CONCAT(' ', `field`, ' ') REGEXP ' $search\[ \,\!\?\]'