Mysql:如何将存储的Regex列值与传递的Query参数进行匹配

时间:2018-01-25 11:03:52

标签: java mysql

Mysql:Hot可以将存储的Regex列值与传递的Query参数进行匹配。

我有一个名为user_access的表

    user_access 
    1. id
    2. userId
    3. url
 

它包含像

这样的数据
 
    id userId    url
    1   1    service/v1/users/[^/?#]+
    2   1    service/v1/users/[^/?#]+/notes
    3   1    service/v1/users/[^/?#]+/notes/[^/?#]
    4   2    service/v1/users/[^/?#]+/notes
    5   2    service/v1/users/[^/?#]+/notes/[^/?#]

我想检查一下,如果用户1正在访问url service / v1 / users / 1,那么他在表中有正确的url regex条目。

在mysql中我知道我们可以匹配正则表达式

    select 'service/v1/users/1' regexp ' service/v1/users/[^/?#]+';

如果我知道user_access ID,则可以使用
完成  

    select 'service/v1/users/1' regexp  (select url from user_access where id=1);

问题是我只知道用户ID(1),为此我们在user_access表中有三个条目。
 如果我运行查询
  

    select 'service/v1/users/1' regexp  (select url from user_access where userId=1);

返回错误代码1242.子查询返回多行。

1 个答案:

答案 0 :(得分:0)

使用此SQL:select * from user_access where 'service/v1/users/1' regexp url = 1