【问题标题】:Mysql query- How to use contains?Mysql查询-如何使用包含?
【发布时间】:2016-11-28 13:12:07
【问题描述】:

在我的表中,名为 group_members_id 的列包含 10 个用户的 userid。 我一直试图弄清楚如果给定userid 与这10 个用户ID 中的任何一个匹配,我如何使用MySQL 进行查询以获取该行的详细信息。

"SELECT * FROM `table` WHERE `group_members_id`.contains('{$userid}')".

此代码不起作用。谁能帮我?

【问题讨论】:

  • 只是为了分类,您正试图从 SQL 表中提取 group_members_id = xyz 的记录,并且在 group_members_id 字段中有一个类似 {1}、{2}、{3} 的列表, {4}...等等??
  • 你可以使用 find_in_set。

标签: php mysql contains


【解决方案1】:

你可以这样使用

"SELECT *
FROM `table`
WHERE `group_members_id` LIKE '%{$userid}%'"

【讨论】:

    【解决方案2】:

    使用like 子句

    "SELECT * FROM table WHERE group_members_id LIKE '%$userid%'";
    

    【讨论】:

      【解决方案3】:

      考虑到所有用户 ID 都是 INT 类型:

      <?php
      //$aUserIds is an array of  your User Ids.
      $userIds = implode(",", $aUserIds);
      $sQuery  = "SELECT * FROM table WHERE group_members_id IN (" +  $uSerIds + ")";
      

      或者,如果它们是字符串类型,则使用:

      $userIds = implode(",", $aUserIds);
      $sUserIds = "";
      foreach($userId as $userIds)
      {
         $sUserIds += "'" + userId + "'";
      }
      $sQuery  = "SELECT * FROM table WHERE group_members_id IN (" +  $sUserIds + ")";
      

      【讨论】:

        【解决方案4】:

        首先,始终使用 group_member_id 作为foregin id 并将其设为 int。

        其次,永远不要使用整数值作为字符串。它将有助于其他功能,如排序等。

        第三,如果你已经将整数值作为字符串存储在表中,那么你可以使用如下:

        1.) 在字符串中使用LIKE Clause 关键字以及百分号

        "SELECT * FROM table WHERE group_members_id LIKE '%$userid%'";
        

        2.) 如果您正在寻找比您在示例中指定的更复杂的字符串组合,您可以使用正则表达式 (regex): 有关如何使用它们的更多信息,请参阅 MySQL 手册:http://dev.mysql.com/doc/refman/5.1/en/regexp.html

        【讨论】:

          猜你喜欢
          • 2011-02-11
          • 2017-08-15
          • 1970-01-01
          • 2013-02-16
          • 2021-11-05
          • 2011-02-05
          • 2011-08-02
          • 1970-01-01
          • 2017-10-25
          相关资源
          最近更新 更多