2014-01-03 3 views
-3

Мои пользователи вводят регулярное выражение URL-адресов в приложении. Я должен возвращать строки с регулярными выражениями, которые соответствуют заданному URL-адресу.Поиск строк, содержащих регулярное выражение с моей совпадающей строкой

У меня есть таблица вроде этого:

+----+-----------------------+--------------------------+ 
| id | Survey    | URL Regexp    | 
+----+-----------------------+--------------------------+ 
| 1 | User Age survey  | http://*.google.com/* | 
| 2 | Payment intent survey | http://mail.google.com/* | 
| 3 | User Country info  | *reader.google.com*  | 
| 4 | Company information | http://facebook.com/* | 
| 5 | Satisfaction survey | http://*twitter.com/* | 
+----+-----------------------+--------------------------+ 

Я хочу запустить запрос к URL, http://mail.google.com/index.html и увидеть (1, 2) в результате (т.е. User Age Survey и Payment intent survey записей).

Я хочу запустить запрос, как это:

SELECT * FROM surveys where MATCH_REGEXP('http://mail.google.com/index.html') 

Я не смог найти какую-либо документацию для такого выражения. Какой был бы лучший способ решить эту проблему?

+0

Итак, в чем же вопрос? – fmendez

+0

В чем вопрос? – sawa

+0

Извините за неоднозначность, добавлено больше деталей для ясности. – Alagu

ответ

1

Пример: working sqlfiddle.

Учитывая у вас есть эти данные:

CREATE TABLE surveys (
    id int auto_increment primary key, 
    survey varchar(30), 
    url_regex varchar(30) 
); 

INSERT INTO surveys (survey, url_regex) VALUES 
('User Age survey',  'http://.*.google.com/*'), 
('Payment intent survey', 'http://mail.google.com/*'), 
('User Country info',  '*reader.google.com*'), 
('Company information', 'http://facebook.com/*'), 
('Satisfaction survey', 'http://*twitter.com/*'); 

Вы можете сделать этот запрос, чтобы достичь того, что вы хотите:

SELECT id FROM surveys 
WHERE 'http://mail.google.com/index.html' REGEXP url_regex; 

Результат будет:

1 
2 

Пожалуйста, обратите внимание что для достижения желаемого результата, то есть (1, 2), регулярное выражение «User Age survey» должно было быть f с добавлением точки перед первой звездочкой.

+0

Блестящий, спасибо! Кроме того, никогда не знал о sqlfiddle. Спасибо за это. – Alagu

Смежные вопросы