如何匹配数据库中的动态路由?

时间:2017-12-09 08:21:27

标签: mysql sql regex

我有一张这样的表:

// routes
+----+-----------------------------+
| id |           route             |
+----+-----------------------------+
| 1  | /tracking_code/expire/{id}  |
| 2  | /tracking_code/list         |
+----+-----------------------------+

{}表示动态值。我需要匹配此条目值的第一行:/tracking_code/expire/2。我想我需要使用正则表达式。知道我该怎么办?

我目前的解决方法是使用LIKE这样的句子:

SELECT * FROM routes WHERE route LIKE :entry%

另外,我应该删除 /tracking_code/expire/ 之类的条目结尾。

可悲的是,我的方法不适合这样复杂的路线:/tracking_code/expire/{id}/temp。无论如何,我应该如何使用正则表达式?

1 个答案:

答案 0 :(得分:0)

您可以像这样使用RLIKE

SELECT * FROM routes WHERE route RLIKE '^.*[0-9]+.*$'

替换使用正则表达式我不认为这是可能的,但有一些偷偷摸摸的方式,请阅读这篇文章How to do a regular expression replace in MySQL?