Как правильно написать 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)
Новые темыОбъявленияСвободное общение
09:47 Adsense личный опыт 
13:13 LOSPOLLOS.COM - Конвертим по рецепту Хайзенберга. Dating, Mainstream, Binary Options 
13:47 Webvork - международная товарная СРА сеть с сертифицированными офферами на Европу. 
08:27 Ищу специалистов 
08:18 Прибыль 200$ - 400$, за каждую 1000 уников! Google, FB и тд 
08:12 ру гембла 
09:18 Влияние использования ИИ для написания текстов на позицию в поисковой выдаче 
15:45 SnapSwap.io — мгновенный обмен BTC, XMR, ETH, USDT и других криптовалют без регистрации! 
15:26 TETChange-Обменник криптовалют 
14:12 GoodsMoney.io 
14:06 swapsfera.com 
10:25 AllCharge.online. Современный, быстрый и надёжный обменник 
10:19 Prism-exchange.io - сервис обмена: криптовалюты, банки РФ, Zelle, наличные USD (Москва, Нью-Йорк) 
04:05 Просто $0.04/IP 9PROXY.COM Резидентные прокси Неограниченная пропускная способность Уникальная политика замены Без чёрного списка 
12:45 Куплю проигрышные букмекерские аккаунты 
11:55 Union Pharm - топовая фарма-партнерка для профессионалов! 
23:51 Всего п онемногу 
17:09 Точные прогнозы на футбол 
10:00 Ну что, кто куда деваете свои сайты? 
16:22 Компьютерная мышь 
23:55 Добро пожаловать в цифровой мир...