Как правильно сделать такую штуку, что бы когда делаю запрос по таблице, допустим, цифру 3, не выводило 13. Или 2 - что бы поиск не выдавал поля , где есть 22. Надеюсь понятно объяснил, спасибо. Сами числа записаны в поле помеченным типом TEXT, но в одной ячейке может быть, к примеру так 13, 16, 17, 20, 21, 22
Использую такой запрос
SELECT * FROM bus_station WHERE bus_key_query LIKE '%2%';
Запрос выводит 2, 20, 22, а нужно получить только конкретный ответ 2.
Перед использованием таких операторов как LIKE убедитесь что вы точно знаете как они работают. Если посмотреть в документацию (неожиданно) то можно найти такое:
The LIKE operator does a pattern matching comparison. The operand to the right of the LIKE operator contains the pattern and the left hand operand contains the string to match against the pattern. A percent symbol ("%") in the LIKE pattern matches any sequence of zero or more characters in the string. An underscore ("_") in the LIKE pattern matches any single character in the string. Any other character matches itself or its lower/upper case equivalent (i.e. case-insensitive matching).
Оператор LIKE использует в своей конструкции регулярные выражения, где поиск происходит по определеному паттерну. Вы же, в своем паттерне (%2%) говорите, что нужно найти число 2 с ЛЮБЫМ количеством символов до и также ЛЮБЫМ количеством после. Следуя из этого ваш паттерн должен просто выглядеть так:
SELECT * FROM bus_station WHERE bus_key_query LIKE '2';
Всё просто, не используйте LIKE:
SELECT * FROM bus_station WHERE bus_key_query = 2;
Ну, и bus_key_query стоит сделать числовым полем.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей