SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.03.2009 10:07:22

Ruskar
Участник
Зарегистрирован: 15.03.2009
Сообщений: 2

Поиск WHERE LIKE по всем полям таблицы

Мне нужно осуществить поиск по всем полям таблицы базы данных примерно так:

SELECT * FROM table WHERE * LIKE '%search%';

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

Неактивен

 

#2 15.03.2009 10:43:16

coin
Гуру
Зарегистрирован: 15.07.2008
Сообщений: 66

Re: Поиск WHERE LIKE по всем полям таблицы

Можно получить названия полей так:

SHOW COLUMNS FROM `table`

Затем подставить поля в запрос:
SET @s:='%search%';
SELECT * FROM `table` WHERE `field1` LIKE @s OR `field2` LIKE @s OR `field3` LIKE @s;

Неактивен

 

#3 15.03.2009 10:54:24

Ruskar
Участник
Зарегистрирован: 15.03.2009
Сообщений: 2

Re: Поиск WHERE LIKE по всем полям таблицы

Спасибо, в принципе к аналогичному решению в PHP я пришёл:

$result = mysql_list_tables("my_db");
   
while ($row = mysql_fetch_row($result))  //Выводим список всех таблиц
{
$fields = mysql_list_fields("my_db", $row[0]);
$cols = mysql_num_fields($fields); //Получаем количество полей
for ($i = 0; $i < $cols; $i++) {
    echo mysql_field_name($fields, $i); //Получаем имена полей
}
}


Просто думал может есть менее велосипедное решение…

Отредактированно Ruskar (15.03.2009 10:55:08)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson