Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Цифры с разделителями в поле - как найти строки, в которых есть заданная цифра?
 
 автор: *m*   (03.05.2011 в 20:31)   письмо автору
 
 

Всем привет!

В таблице есть поле varchar, в нем хранятся данные в таком виде, например:

1/1/1/1/1


Как сделать запрос на совпадение одной из цифр а поле?
То есть например, в скрипт передалась переменная с id = 1, нужно вытащить из БД все записи, где 1 встречается в данном поле.

  Ответить  
 
 автор: cheops   (03.05.2011 в 20:37)   письмо автору
 
   для: *m*   (03.05.2011 в 20:31)
 

Все цифры односимвольные? Т.е. от 0 до 9? Если да, то можно воспользоваться запросом вида
SELECT * FROM tbl
WHERE fld LIKE '%1%';
PS В противном случае придется использовать до четырех условий, что может быть довольно медленно. Если тут важна скорость лучше сразу нормализовать таблицу - будет быстро и исключается целый класс ошибок.

  Ответить  
 
 автор: *m*   (03.05.2011 в 20:50)   письмо автору
 
   для: cheops   (03.05.2011 в 20:37)
 

в данном случае да, от 0 до 9, но это id городов, их количество со временем будет расти, но очень не рационально использовать под каждый доп id отдельное поле, или какую нормализацию Вы имеете ввиду? Или может как-то по другому можно хранить, для удобства поиска по ним..?

  Ответить  
 
 автор: cheops   (03.05.2011 в 20:54)   письмо автору
 
   для: *m*   (03.05.2011 в 20:50)
 

Никаких столбцов не нужно, нужны дополнительные таблицы. Когда вы видите строку, в которой цифры разделены запятой или любым другим разделителем - это признак того, что нужна нормализация. Т.е. вместо одной таблицы нужно сделать две или три. Тогда каждой цифре в последовательности, разделенной разделителем будет соответствовать отдельная строка в специальной таблице, состоящей из двух столбцов - идентификатора той таблице где сейчас стркои и идентификатора города. Цифры лучше хранить в цифровых полях, не загоняйте их в строки - хлебнете с этими строками горя.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования