Как правильно написать 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)
Новые темыОбъявленияСвободное общение
02:35 Кто как борется с ботами ПФ? 
12:35 TacoLoco - рекламная сеть от LosPollos. Большие объёмы качественного трафика! 
15:08 Adtrafico - Правильная партнёрская сеть под бурж трафик 
21:18 Webvork - международная товарная СРА сеть с сертифицированными офферами на Европу. 
16:51 Buymedia.biz - рекламная сеть 
13:36 Партнерская программа OWNR WALLET 
14:10 3snet - гемблинг, беттинг, форекс, бинарные опционы, майнинг 
11:03 Coin Click.cc - Быстрый и надежный обмен электронных валют в два клика 
23:50 Прием платежей для HIGH RISK | Прием платежей без сайта 
23:50 Услуги рассылки Viber|Whatsapp|IMO. 
23:48 Рассылка сообщений в ЛС DISCORD 
23:47 Рассылка в TELEGRAM |Большой опыт работы | Любые тематики | Лучшая конверсия 
10:48 DualCoin - быстрый криптовалютный обменник 
18:50 Европейский эквайринг 
02:44 Точные прогнозы на футбол 
15:43 Заказать телефонный флуд. 
12:05 Ням-ням! - 8 деликатесов, которые когда-то ели только бедные люди 
11:40 Кто сделает прогон для адалт сайта? 
09:25 Добро пожаловать в цифровой мир... 
10:31 Видимо, похороны СУПРа уже прошли как-то по-тихому 
08:08 С юмором по жизни!