Как написать запрос, когда шаблон находится в поле - PullRequest
1 голос
/ 13 февраля 2012

У меня есть таблица, в которой поле содержит шаблон типа 'hey *' или '% test%'. Как это:

Id - f_pattern - f_Respond
1  - 'hey *' - 'hello there'
2  - 'how are you *' - 'am fine'

Возможно ли, что я напишу запрос так:

select * from table where f_pattern like 'hey bobby'

а он возвращает первый ряд?

Ответы [ 2 ]

4 голосов
/ 13 февраля 2012

Да, если вы измените свои паттерны на «одинаково совместимые» значения и измените логику аналога:

select * from pattern_table
where 'hey bobby' like replace(f_pattern, '*', '%')
1 голос
/ 13 февраля 2012

Вы пробовали

select * from `table` where field like 'hey %'

// edit

это меня удивило, но это работает:

create database test;    
use test;
create table pattern (a varchar (100));
insert into pattern values ('a%');
create table subject (a varchar (100));    
insert into subject values ('abc'), ('cde');
select * from subject where a like (select a from pattern limit 1);

-- result
-- +------+
-- | a    |
-- +------+
-- | abc  |
-- +------+
-- 1 row in set (0.03 sec)

см .: http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html

...