sql - 在 SQL / Laravel 中使用“LIKE”运算符比较两列
问题描述
我正在尝试比较表中的两列。我必须检查电子邮件是否包含他的手机号码。
TableName:- Table1
TableColumns:- id,email,MOB
前任。
SQL:
'SELECT * FROM Tabel1 WHERE email LIKE %MOB%'
拉拉维尔:
Tabel1::whereColumn('email', 'LIKE','%MOB%')->get();
我已经尝试过上面的查询,但它显示语法错误。
解决方案
让我们首先回答您关于 SQL 的问题,引号中的任何内容都是 SQL 的文字,因此您需要使用列引用并添加通配符。你可以这样做:
SELECT * FROM Table1 WHERE email LIKE CONCAT('%', MOB, '%');
现在让我们看看 Laravel,where 的第三个参数需要一个文字值而不是另一列。您可以通过whereRaw或DB::raw来克服这个问题:
Table1::whereRaw("email LIKE CONCAT('%', MOB, '%')");
或者
Table1::where('email', 'LIKE', DB::raw("CONCAT('%', MOB, '%')"));
推荐阅读
- mysql - MySQL 大量更改基数
- ffmpeg - ffmpeg 无法打开视频文件,而 PotPlayer 和 VLCPlayer 可以
- azure-machine-learning-studio - 如何从 Azure ML 中的 ComputeTarget.list(workspace=ws) 检索计算集群名称
- flutter - 付款成功后我想导航到另一个页面
- ios - 将子视图设置为隐藏在 UIStackView 中时出现奇怪的拉伸效果
- javascript - 是否有可能通过 MomentJs 的帮助将日期 obj 转换为另一种格式?
- python - 使用 Selenium python,在等待隐藏的 btn 出现并可以点击时是否需要刷新页面?
- mysql - MySQL 存储过程在 PhpMyAdmin 中运行缓慢,但在 Workbench 中运行速度快
- django - 无法迁移新模型
- python - 当传递的值为 dataset.take(1) 时,无法使用 tf.cast 更改 dtype