Как правильно написать SQL запрос
Страницы: 1 2 След.
Как правильно написать SQL запрос, нужно найти запис в таблице в поле которого "1" но не как вхождение "1" в "11" к примеру
Есть записи с полем типа varchar, нужно сделать выборку  точного вхождения например 1 в поле но не как ни 11, 41, 121 и так далиЗаписи в полях имеют такой вид
1,45,67
89,11,90,50
4,14
412,10,9,89,63

пробовал LIKE %% но он выбирает все записи в которых попадается любое  вхождение искомого числа
WHERE имяполя='1'
Цитата
Олег Гречина пишет:
WHERE имяполя='1'
вы явно не поняли....

Цитата
maxon390 пишет:
412,10,9,89,63
Нужно перебивать данные... делать типа !1!,!22!,!11!,!89! и тд... а после этого у вас получится делать выборку like %!1!%. Помоему, здесь только такой выход...
Изменено: mons - 13 Июля 2012 13:49
заходишь на американский форум, задаешь вопрос, тебе объясняют, как ее решить
заходишь на еврейский, задаешь вопрос, тебе предлагают, купить решение за деньги
заходишь на русский форум, задаешь вопрос и тебе весь форум объясняет, что ты мудак
Цитата
mons пишет:
Нужно перебивать данные... делать типа !1!,!22!,!11!,!89! и тд... а после этого у вас получится делать выборку like %!1!%. Помоему, здесь только такой выход...
То есть использовать любые разделительные знаки, как бы обволакивая цифру!

Больше других способов нет?
Цитата
maxon390 пишет:
Цитата
mons пишет:
Нужно перебивать данные... делать типа !1!,!22!,!11!,!89! и тд... а после этого у вас получится делать выборку like %!1!%. Помоему, здесь только такой выход...
То есть использовать любые разделительные знаки, как бы обволакивая цифру!

Больше других способов нет?
Смотрите, оператор лайк ищет вхождение, символы % обрезают все слева и справа и в итоге получаем то, что искали, но результатов может быть много, вот поэтому прийдется "обволакивать" цифры, тогда получим точное вхождени данного символа.
Цитата
mons пишет:
Смотрите, оператор лайк ищет вхождение, символы % обрезают все слева и справа и в итоге получаем то, что искали, но результатов может быть много, вот поэтому прийдется "обволакивать" цифры, тогда получим точное вхождени данного символа.
А если так:
LIKE 28%

Что если в начале нет знака % то в искомом поле тоже не должно быть ничего быть, так?
Почитайте здесь, может поможет.

Функция


CREATE FUNCTION SPLIT_STR(x VARCHAR(255), delim VARCHAR(12), pos INT )
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');

Использование


SELECT SPLIT_STR(string, delimiter, position)

Пример


SELECT SPLIT_STR('a|bb|ccc|dd', '|', 3) as third;
Цитата
Jaguar пишет:
SELECT SPLIT_STR(string, delimiter, position)
Позиция заранее не известна:(, число может быть и в середине, в конце и в где нибуть в середине перечисления так что скорей всего не подходит

Почитав про LIKE пришол к выводу что можно сделать так
 
SELECT таблица WHERE поле LIKE число%,  LIKE %,число,%,  LIKE %,число
первый  LIKE ищет нет ли искомого числа в диапазоне на первой позициивторой LIKE ищет нет ли искомого числа в середине перечисления
третий LIKE в конце 

Ну как думаете сработает такая конструкция? Попробовать сейчас не могу так как на работе
Цитата
maxon390 пишет:
SELECT таблица WHERE поле LIKE число%, LIKE %,число,%, LIKE %,число
можно так попробывать : SELECT таблица WHERE поле LIKE число,% or LIKE %,число,% or LIKE %,число  но на 100% неуверен.
Цитата
mons пишет:
LIKE число,%
Вот именно и с первым числом наверное и будут проблемы, так как после него может и не быть комы то есть в поле может быть только одно число но тогда думаю мне нужно попробовать 
SELECT таблица WHERE поле LIKE число or LIKE число,% or LIKE %,число,% or LIKE %,число 

нужно будет попробовать когда домой прийду
Цитата
maxon390 пишет:
Позиция заранее не известна:(, число может быть и в середине, в конце и в где нибуть в середине перечисления так что скорей всего не подходит
Нужно проверить каждую позицию.
Цитата
Jaguar пишет:
Цитата
maxon390 пишет:
Позиция заранее не известна:(, число может быть и в середине, в конце и в где нибуть в середине перечисления так что скорей всего не подходит
Нужно проверить каждую позицию.
Я ж так сервер положу, пускай у меня сейчас 600 записей умножить на пускай 10 позиций в поле(чисел в поле) получается 6000 запросов чтобы загрузить одну страничку
Надо написать в одном запросе.
Цитата
Jaguar пишет:
Надо написать в одном запросе.
Приведи пример а то я не совсем понимаю как можно в одном запросе это сделать?
SELECT id,имя,год FROM фильмы WHERE flag_moderation=1 AND cast LIKE '$id,%' OR LIKE '%,$id,%' ORDER BY year DESC
пробовал и так
WHERE flag_moderation=1 AND (cast LIKE '$id,%' OR LIKE '%,$id,%') ORDER BY year DESC
Не хочет выборку делать:mad:

как правильно написать нигде не могу найти подобного условия
Страницы: 1 2 След.
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Новые темыОбъявленияСвободное общение
05:34 сео тренды 2026 - что щас вообще работает? 
02:17 ИКС Яндекс АПдейт 1 апреля 2026. Обновлён алгоритм расчёта 
22:53 Бесплатное получение бэклинков 
19:44 Яндекс Нейро и выдача в 2026 - остались ли лазейки для маленьких сайтов? 
19:23 Adsense личный опыт 
19:21 WB и Ozon - новые "русские поисковики"? Яндекс теряет коммерческую выдачу 
23:22 Рост эффективности моего интернет‑магазина 
23:47 Volna.money 
23:46 GoodsMoney.io 
23:10 Продам сайт - продукты питания 
19:36 Русские народные сказки - оцените! 
14:27 1obmen.net - обмен криптовалют: выплаты в USD, EUR, GBP, CAD, CNY 
13:22 Продам аккаунты Gmail USA IP | Gmail MIX IP | Outlook Old 
12:39 Monitex: Мониторинг с кэшбэком 80% в USDT 
23:42 Ставки на супер тренды в спорте 
19:56 Чак Норрис ушел - 19 марта 2026, 86 лет, семья подтвердила 
19:55 Список обновленных тем пуст... 
22:55 С юмором по жизни! 
22:19 8 марта: желаю аптайма 99.9% и e-e-a-t без локов 
21:16 Почему не обновляется счетчик ИКС (индекса качества сайта) 
19:57 молодильные яблоки и живая вода