如何在回送where子句中使用正则表达式-连接到SQL Server数据源?

时间:2019-05-03 22:15:35

标签: sql-server loopbackjs

我正在使用以下代码在SQL Server数据库中搜索用户,但是会引发REGEXP错误。

使用loopback 3loopback-mssql-connecter

let searchedValue = await User.find({
        where: {
          or: [
            {first_name: new RegExp('\\b' + req.query.s, 'i')},
            {last_name: new RegExp('\\b' + req.query.s, 'i')},
            {email: new RegExp('^' + req.query.s, 'i')},
          ],
        },
      });

此精确查询在绑定到MongoDB数据源时起作用,但在使用SQL Server数据源时不起作用。

我收到以下错误

  

Microsoft SQL Server不支持正则表达式运算符
  请求GET的未处理错误/ api / leagues / searchusers /?s = nir:
  RequestError:“ REGEXP”附近的语法不正确。

2 个答案:

答案 0 :(得分:0)

Sql Server does not support regex。您可以使用LIKE,但不能保证。

            {first_name: {like: '\\b' + req.query.s}},
            {last_name: {like: '\\b' + req.query.s}},
            {email: {like: '^' + req.query.s}}

MongoDB是支持它们的另一个数据源。

答案 1 :(得分:0)

尝试此操作以获取SQL数据源

   [
        {first_name: { like: `%${req.query.s}%`} },
        {last_name: { like: `%${req.query.s}%`} },
        {email: { like: `${req.query.s}%`} },
   ]