Сравните два столбца с оператором 'LIKE' в SQL / Laravel

Я пошел с адаптацией решения @gustavohenke, внедряя cast ObjectId в try-catch, обернутый вокруг исходного кода, чтобы использовать отказ в методе ObjectId в качестве метода проверки.

Controller.prototype.show = function(id, res) {
  try {
    var _id = mongoose.Types.ObjectId.fromString(id);



    // the original code stays the same, with _id instead of id:

    this.model.findById(_id, function(err, doc) {
      if (err) {
        throw err;
      }
      if (!doc) {
        res.send(404);
      }
      return res.send(doc);
    });



  } catch (err) {
    res.json(404, err);
  }
};
0
задан Narendra 8 March 2019 в 09:42
поделиться

2 ответа

Вы должны попробовать это

SELECT * FROM Tabel1 WHERE email LIKE '%' +MOB+'%'
0
ответ дан Suraj Kumar 8 March 2019 в 09:42
поделиться

Давайте начнем с ответа на вопрос по SQL, все, что в кавычках, является литералом для SQL, поэтому вам нужно использовать ссылку на столбец и добавлять символы подстановки. Вы можете сделать это следующим образом:

SELECT * FROM Table1 WHERE email LIKE CONCAT('%', MOB, '%');

Теперь давайте посмотрим на Laravel, третий аргумент, где ожидается буквальное значение, а не другой столбец. Вы можете преодолеть это с помощью гдеRaw или DB :: raw :

Table1::whereRaw("email LIKE CONCAT('%', MOB, '%')");

или

Table1::where('email', 'LIKE', DB::raw("CONCAT('%', MOB, '%')"));
0
ответ дан Namoshek 8 March 2019 в 09:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: