Mysql 如何使用Capsule通过给定列表参数查询出所有数据?

Mysql 如何使用Capsule通过给定列表参数查询出所有数据?,mysql,database,laravel,Mysql,Database,Laravel,我用于查询数据库 这是我的数据库表: ip\u内容字段类型为文本 现在我想使用capsule通过传递ip列表来查询数据 例如pass[12.1.1.1、13.2.2.5、14.2.2.8]param,我想把服务器都升级 以我的方式,我只能想出使用double for loop来实现它,那么有没有其他更有效的方法来实现它。你可以这样做 SELECT server_name FROM table WHERE ( ip LIKE '%12.1.1.1%' OR ip LIKE '%13.2.2.5

我用于查询数据库

这是我的数据库表:

ip\u内容
字段类型为文本

现在我想使用capsule通过传递ip列表来查询数据

例如pass
[12.1.1.1、13.2.2.5、14.2.2.8]
param,我想把服务器都升级

以我的方式,我只能想出使用double for loop来实现它,那么有没有其他更有效的方法来实现它。

你可以这样做

SELECT server_name FROM table 
WHERE ( ip LIKE '%12.1.1.1%' OR ip LIKE '%13.2.2.5%' OR ip LIKE '%14.2.2.8%' )
或者您可以使用匹配查询

  • 将表引擎更改为MyISAM,因为InnoDB不支持全文搜索
  • 在列ip_内容上创建全文索引,如下所示:
  • 在MYSQL的ini文件中设置ft_min_word_len=1
  • 重新启动Mysql
  • REPAIR TABLE
    TABLE
    QUICK
  • 然后按如下方式运行查询:

    SELECT * FROM `table` 
    WHERE MATCH(ip_content)  
    AGAINST ('"13.2.2.5" "12.1.1.1" "14.2.2.8"' IN BOOLEAN MODE)
    

    使用倒逗号和空格来分隔ip/单词

    您可以提供您尝试过的代码吗?ip\U内容的数据类型是什么?因为我在本专栏中看到多个IP是text/array/json?是的,如@ab.in所说,提供一些代码。可能会有不准确的地方,`13.2.2.5%`将匹配
    13.2.2.51
    13.2.2.52
    等等。它不是
    13.2.2.5
    SELECT * FROM `table` 
    WHERE MATCH(ip_content)  
    AGAINST ('"13.2.2.5" "12.1.1.1" "14.2.2.8"' IN BOOLEAN MODE)