Имеем таблицу table1 в mysql из двух столбцов и множества строк. Первый столбец "raschet" содержит произвольные тексты. Второй столбец "codes" содержит тексты вида "587 -7952 +4568 5465", то есть в одной ячейке данного столбца содержатся целые числа (могут быть со знаком плюс, минус или вообще без них), разделенные пробелом. Задача - осуществить поиск по второму столбцу, например, найти ячейки в которых имеются числа больше 1000 или числа 2 или числа меньше 500.
Re: Поиск по массиву http://www.mysql.ru/docs/man/String_com ... tions.html тебя там интересует REGEXP, как вариант ну или выбирать тупо всё, парсить и отсеивать ненужное Хотя регулярку можно составить для конкретного условия, а у тебя слишком много "или" в условии.
смысл какой. у юзера три варианта поиска - три текстовых поля, куда можно ввести один код. 1) выполнить поиск, который вернет ячейки, где есть коды меньше указанного. 2) выполнить поиск, который вернет ячейки, где есть коды больше указанного. 3) выполнить поиск, который вернет ячейки, где есть указанный код. но я так понимаю, что нужно выбрать весь столбец с кодами, загнать его в пхп массив и с ним уже работать. то есть будет функция поиска, которая среди всех элементов массива будет осуществлять поиск. или же это можно осуществить регуляркой в запросе к БД?
Ну напиши хоть что-то сам. Алгоритм прост выбираешь все записи из базы В цикле анализируешь соответствие текущей записи нужному условию. Если соответствует - выводишь. Функции для работы с базой http://www.php.ru/manual/book.mysql.html Нет, регулярки в даном случае непрокатят. Это для 1000 или 500 легко условие задать можно. В общем случае с произвольными числами не стоит париться
нужно найти в таблице +65678459. делаю sql запрос в phpmyadmin SELECT * FROM `table1` WHERE `codes` REGEXP '\+65678459' выдает ошибку "#1139 - Got error 'repetition-operator operand invalid' from regexp" почему? вроде экранировал плюс а если SELECT * FROM `table1` WHERE `codes` REGEXP '\\+65678459', то выдает правильный результат
Чтобы было проще делать выборку (и, собственно, возможно), надо второе поле заменить на число X, а в новой таблице, состоящей из двух полей, в первое поле положить это число X, а во второе - по очереди числа, полученные разбиением списка "587 -7952 +4568 5465" по пробелу. Короче говоря, привести к нормальной форме.