SQL LIKE поиск точного совпадения
Добрый день, такой вот вопрос.
Есть SQL запрос, проблема с WHERE
Есть записи, вида: 2,10 2,22 5,22
В итоге SQL запрос возвращает все 3 записи, т.к. 2 встречается во всех 3 записях, а нужно чтобы возвращалась, только 1-я запись. Как задать строгий режим соответствия?
Решение:
Есть SQL запрос, проблема с WHERE
WHERE u.id LIKE '%{$var}%'Допустим перменная {$var} равна = 2. Есть записи, вида: 2,10 2,22 5,22
В итоге SQL запрос возвращает все 3 записи, т.к. 2 встречается во всех 3 записях, а нужно чтобы возвращалась, только 1-я запись. Как задать строгий режим соответствия?
Решение:
WHERE FIND_IN_SET({$var}, u.id) Комментарии: 19
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Либо можно сделать обертку всего поля из запятых, будет выглядеть так: ,2,10 2,22, 5,22, и выбирать оттуда ,2,
А, нет, не поможет.
Вместо запятой могут быть и другие символы.
В общем попробуй через регулярки, может и получится.
Я в таких случаях делал обертку значения.
Конструкция такая: число, число
Вот так можно попробовать, ищет переменную и исключает цифры вокруг нее.
{$var} точно заменяется? То, что я скинул должно работать.
Какой нибудь аналог explode в php :)
Разбить на подстроки и проверить слева и справа.
И самое главное, нужно полное соответствие, те 2 != 22 или 4 != 444
Только регулярки — обычно они помогают такие проблемы решить.
Вот так еще можно попробовать.
Я уже и такую конструкцию попробовал:
Но как я уже и писал выше, он выдает все, что находит.
Иными словами мы ищем айдишник 2, а он находит 2 и 22 и 225 и тд
У LIKE нет никакого оператора типа =?
Да простят меня Боги SQL. Может быть кто-то потом, что-то по-лучше посоветует.
Тогда будет: |2|,|10 2|,|22|,| 5|,|22|