|
|
|
| раскажите пожалуйсто как лучше организовать поиск по БД, какие запросы для этого существуют.
зарание благодарен. | |
|
|
|
|
|
|
|
для: Crux
(16.10.2004 в 20:55)
| | Я пользуюсь оператором like и по мойму это единственная функция для поиска | |
|
|
|
|
|
|
|
для: Crux
(16.10.2004 в 20:55)
| | А что требуется найти? По ссылке приведён обсуждение полнотекстового поиска по таблице, но часто достаточно осуществлять поиск по дате или цене...
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=148 | |
|
|
|
|
|
|
|
для: cheops
(16.10.2004 в 21:12)
| | с опрератором LIKE всё понятно, а другие операторы существуют? | |
|
|
|
|
|
|
|
для: Crux
(16.10.2004 в 21:21)
| | Там по ссылке указано два способа, один оператор LIKE, второй полнотекстовый поиск по столбцу для которого имеется индекс FULLTEXT. В последнем случае используется операторы
Например,
SELECT id FROM base
WHERE MATCH(text) AGAINST('искомое слово');
|
PS В рамках полнотекстового поиска в последних версиях MySQL появился так называемый логический режим позволяющий задавать действительно гибкие условия поиска. | |
|
|
|
|
|
|
|
для: cheops
(16.10.2004 в 22:13)
| | ясно спасиб, но тема пока ещё не закрыта | |
|
|
|
|
|
|
|
для: Crux
(16.10.2004 в 22:52)
| | я вот тоже пользую
SELECT id FROM base
WHERE MATCH(text) AGAINST('искомое слово');
|
так привычней с обычными запросами... | |
|
|
|
|
|
|
|
для: cheops
(16.10.2004 в 21:12)
| | А как найти значение поля и сделать то или иное действие?
<? php
$x= mysql_query ("SELECT FROM base
WHERE text LIKE 'искомое_слово' ;");
if ($x)
{
echo "в таблице base в поле есть искомое слово";
}
else
{
"в таблице base в поле нет искомого слова";
}
?>
|
у меня что то не так а что ? | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(22.10.2004 в 10:00)
| | Хм.. в SQL-запросе после SELECT отсутствует знак звёздочки, кроме того $x - является дескриптором и принимает false, только в том случае если база данных не может выполнить запрос (например, ошибка в синтаксисе SQL-запроса), для проверки того факта найдено искомое слово или нет лучше воспользоваться функцией mysql_num_rows()
<?php
$x= mysql_query ("SELECT * FROM base
WHERE text LIKE 'искомое_слово' ;");
if (!$x)
{
echo "Ошибка в синтаксисе";
exit();
}
if(mysql_num_rows($x)>0)
{
echo "в таблице base в поле есть искомое слово";
}
else
{
echo "в таблице base в поле нет искомого слова";
}
?>
|
http://www.softtime.ru/dic/id_dic=122&id_group=2 | |
|
|
|
|
|
|
|
для: cheops
(22.10.2004 в 11:36)
| | pole-имя столбца
<?php
$x = mysql_query ("SELECT pole
FROM table_name WHERE pole= '".$имя_переменной_что_ищем."'
;");
if (!$x)
{
echo "Ошибка в синтаксисе";
exit();
}
if (@mysql_result($x, pole))
{
echo " '".$имя_переменной_что_ищем."' есть";
}
else
{
echo " '".$имя_переменной_что_ищем."' нет";
}
?>
|
А так хуже или просто по другому? | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(22.10.2004 в 12:10)
| | В принципе должно работать, но это хуже в идеологическом смысле :), в условие оператора if лучше вообще не помещать функции которые не возвращают жёстко true или false (ну или 1 и 0, соотвественно) это часто приводит к логическим ошибкам, которые вылавливаются всех дольше. | |
|
|
|
|
|
|
|
для: cheops
(22.10.2004 в 12:28)
| | а оператор REGEXP чем отличается от LIKE | |
|
|
|
|
|
|
|
для: Crux
(25.10.2004 в 23:28)
| | RLIKE или REGEXP - это аналоги оператора LIKE, но вместо шаблона поиска допускающие использование регулярных выражений.
SELECT "fo\nfo" REGEXP "^fo$";
SELECT "fofo" REGEXP "^fo";
|
Первое сравнение ложно, второе истино. | |
|
|
|
|
|
|
|
для: cheops
(25.10.2004 в 23:48)
| | ага... это то мне и надо было, спасиб | |
|
|
|
|
|
|
|
для: Crux
(26.10.2004 в 00:06)
| | А вот я сталкнулся с интересной ситуацией... А разве с помощью like можно искать только по полям char и varchar
А с помощью конструкции MATCH (...) AGAINST только по полям типа text? | |
|
|
|
|
|
|
|
для: Sin
(26.03.2005 в 14:05)
| | С помощью MATCH (...) AGAINST только по полям производных от text, так как для этого используется индекс полнотекстового поиска FULLTEXT.
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1991 | |
|
|
|
|
|
|
|
для: cheops
(26.03.2005 в 15:40)
| | А значит с помощью like можно искать по любым полям? | |
|
|
|
|
|
|
|
для: Sin
(26.03.2005 в 16:13)
| | В общем да. | |
|
|
|