首页 > 解决方案 > 在 SQL / Laravel 中使用“LIKE”运算符比较两列

问题描述

我正在尝试比较表中的两列。我必须检查电子邮件是否包含他的手机号码。

TableName:- Table1
TableColumns:- id,email,MOB

前任。

SQL:

 'SELECT * FROM Tabel1 WHERE email LIKE %MOB%'

拉拉维尔:

Tabel1::whereColumn('email', 'LIKE','%MOB%')->get();

我已经尝试过上面的查询,但它显示语法错误。

标签: sqllaravel

解决方案


让我们首先回答您关于 SQL 的问题,引号中的任何内容都是 SQL 的文字,因此您需要使用列引用并添加通配符。你可以这样做:

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

现在让我们看看 Laravel,where 的第三个参数需要一个文字值而不是另一列。您可以通过whereRawDB::raw来克服这个问题:

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

或者

Table1::where('email', 'LIKE', DB::raw("CONCAT('%', MOB, '%')"));

推荐阅读