首页 > 解决方案 > 使用equal的Mysql where子句不起作用,只能使用LIKE

问题描述

我有一个 laravel 应用程序,它生成并执行下面的查询

select
      *
    from
      `read_items`
    where
      `subject_type` = 'App\Models\Scholar'
      and `user_id` = 59;

上面的 sql 不起作用,尽管我的数据与user_id = 59subject_type = 'App\Models\Scholar'在同一行

但是当我使用时like,查询正在运行

select
      *
    from
      `read_items`
    where
      `subject_type` like '%Scholar'
      and `user_id` = 59;

标签: mysqllaravelwhere-clause

解决方案


反斜杠\用于转义下一个字符。所以你必须再逃\一个\

所以你的查询应该像

SELECT
    *
FROM
    `read_items`
WHERE
    `subject_type` = 'App\\Models\\Scholar' AND `user_id` = 59

结果

在此处输入图像描述

But when I use like, the query is working

那是因为你只使用了subject_type like '%Scholar'. 试试看subject_type LIKE '%Models\Scholar%',不行


推荐阅读