Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выборка на сонове части строки 
V
    Опции темы
Pokoinik
Дата 27.11.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: нет
Всего: 3



есть поле таблицы в которой хранится инфа вида 1,2,35,546,65,3,345
мне, к примеру нужно вырбрать все строки содержащие число 3

Это сообщение отредактировал(а) Pokoinik - 27.11.2007, 16:45


--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
igorold
Дата 27.11.2007, 16:48 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



если поле текстовое, то используйте LIKE:
Код

where `Поле` like '%3%'



--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
skyboy
Дата 27.11.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



igorold, я так понимаю, что автору темы надо не цифру "3" в любом месте, а чтоб именно было ",3," - то есть отделенное от остальных число. т.е. приведенное тобой условие сработает и для строки "33,78,13,23". кроме того, работать с шаблонами("%" при использовании like) - заведомо медленнее, чем использовать locate.
т.е. по требуемой задаче подойдет такой вариант:
Код

WHERE LOCATE(',3,',CONCAT(',',CONCAT(`some_field`,',')))> 0

Но вообще-то, если подобный поиск будет проихсодить довольно часто - было бы разумнее привести структуру БД к нормальной форме.

Добавлено через 2 минуты и 42 секунды
пояснение к коду: сначала мы добавляем к строке спереди исзади по запятой, чтоб строка была однотипной, независимо от того - вначале находится искомое число или в середине(в начальных условиях первое число в строке отделено запятой только с одной стороны, последнее число - тоже только с одной, а остальные числа отделены запятыми с обоих сторон; преобразованная строка - CONCAT(',',CONCAT(`some_field`,',')) - избавлена от того недостатка: все числа отделены от соседей с обоих сторон). После преобразование мы можем искать необходимое нам число, указав, что справа и слева отнего обязательно должны быть запятые.

Добавлено через 2 минуты и 59 секунд
впрочем, нормализация в данном случае должна рулить...
PM MAIL   Вверх
Pokoinik
Дата 27.11.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: нет
Всего: 3



skyboy, совершенно верно...
+1


--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0746 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.