我的用户在应用中输入正则的网址表达式。我必须使用与给定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/* |
+----+-----------------------+--------------------------+
我想针对网址运行查询,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 :(得分: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)
,必须通过在第一个星号前加一个点来修复“用户年龄调查”正则表达式。