2015-05-25 2 views
1

У меня есть содержимое таблицы. Столбцы -> идентификатор, название, описание.Поиск в столбце mysql против предоставленного значения json

CREATE TABLE IF NOT EXISTS `contents` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `title` varchar(255) DEFAULT NULL, 
    `description` text, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

- выгрузка данных для таблицы contents -

INSERT INTO `contents` (`id`, `title`, `description`) VALUES 
(1, 'My fab phone', 'I own an iphone 5c.'), 
(2, 'I hate my phone', 'I have a Samsung S4. :('); 

У меня есть JSon vaue сделанный с помощью ввода пользователя. Его как ->

[{"devices":"iPhone 5c"},{"devices":"Samsung S4"}] 

Я хотел бы найти против него против названия, описание comlumn в MySQL .. мое приложение в PHP. возможно ли это в mysql? или мне нужно манипулировать json запустить его в цикле, а затем простой поиск в mysql? ... Если его можно в MySQL, то пожалуйста, помогите

+0

можно разобрать JSON в MySQL с помощью common_schema – Mehar

+0

я не могу использовать common_schema кузен, который требует установки и ее общий сервер с .. но все равно спасибо за понимание. –

ответ

-1
SELECT * 
FROM `contents` 
WHERE 
    (`title` = 'iPhone 5c' AND `description` = 'iPhone 5c') 
    OR 
    (`title` = 'iPhone 5c' OR `description` = 'iPhone 5c'); 
0

Просто преобразовать таблицу в MyISAM двигатель хранения

SELECT * 
FROM pages 
WHERE MATCH(title, description) AGAINST ('keyword' IN BOOLEAN MODE) 

Это будет намного быстрее, если вы создаете FULLTEXT индекс на столбцах:

CREATE FULLTEXT INDEX fx_pages_title_description ON pages (title, description) 

, но будет работать даже без индекса.

+0

Спасибо. Это кажется полезным. –

0

Используйте common_schema как этот

select common_schema.extract_json_value(t.title,'/title') , common_schema.extract_json_value(t.description,'/description') from contents t ; 
Смежные вопросы