Извините, если заголовок не очень описательный, я действительно не знал, как это кратко выразить. На моем сайте у меня есть таблица базы данных, полная видеоигры & Команды eSports. Когда я показываю имя Team в URL-адресе, я удаляю из него все пробелы. По этой причине мне нужно принять бессмертную версию имени во время поиска, если кто-то попробует ввести имя, которое они нашли в URL-адресе.SQL Выбор LIKE результатов и точных результатов с заменой()
Пример названия команды: Los Santos Kings
Пример URL: mysite.com/teams/LosSantosKings
Пример поискового запроса # 1: "Лос-Сан" (без кавычек)
РезультатыПример поиска # 1: Los Santos Kings
Пример поискового запроса # 2: "LosSan" (без кавычек) Результаты
Пример поиска # 1 : empty - 0 строк возвращено
Если вы выполните поиск «Los San», то он возвращает строку базы данных команды. Однако, если вы ищете «LosSan», это не так. Этот метод использования функции SQL replace()
отлично работает, когда я тестирую его для точных совпадений, но когда он установлен рядом с запросом LIKE, он не работает в последнем экземпляре.
Вот мой запрос:
$sql = "SELECT * FROM teams WHERE name LIKE '%{$search}%' OR replace(name, ' ', '') LIKE '%{".str_replace(' ', '', $search)."}%' ORDER BY name ASC"
Является ли это ошибка синтаксиса, или мне нужно идти об этом по-другому, возможно, с 2 отдельных запросов/проверяет имя команды?
«Это ошибка синтаксиса», дала вам ошибку? – Sablefoste
Нет, это не дает мне никакой ошибки. Вот почему я спрашиваю здесь. То, что я подразумевал под синтаксисом, заключается в том, разрешены ли LIKE и an = в одном запросе. – SISYN
Вы можете использовать столько «LIKE» и '=' в комбинации, сколько хотите, если логика правильная. Но в вашей логике вы используете функцию «replace» для имени столбца. Наверняка вы знаете имя столбца во время вашего запроса? – Sablefoste