admin

在mySQL的整个表中搜索字符串

sql

我试图在mySQL的整个表中搜索一个字符串。

我想搜索表的所有字段和所有主菜,返回包含指定文本的每个完整条目。

我不知道如何轻松地搜索多个字段。详细信息如下:

该表是“客户端”。它具有大约30个字段和800个条目,太多了以至于无法在浏览器中一次全部显示。我想搜索的域名(即“玛丽”),但它可能是在shipping_name fieldbilling_name field,或email字段等

我想在所有字段中搜索包含字符串“ Mary”的所有条目。我认为这应该可行,但不可行:

SELECT * FROM `clients` IN 'Mary'

阅读 158

收藏
2021-05-10

共1个答案

admin

尝试这样的事情:

SELECT * FROM clients WHERE CONCAT(field1, '', field2, '', fieldn) LIKE "%Mary%"

您可能需要查看SQL文档,以获取有关字符串运算符和正则表达式的其他信息。

编辑:NULL字段可能存在一些问题,因此以防万一,您可能想使用IFNULL(field_i, '')而不是field_i

区分大小写 :您可以使用不区分大小写的排序规则或类似的方法:

... WHERE LOWER(CONCAT(...)) LIKE LOWER("%Mary%")

只搜索所有字段
:我相信没有一种方法可以使SQL查询在没有明确声明要搜索的字段的情况下遍历所有字段。原因是存在关系数据库的理论和操纵关系数据的严格规则(某些东西例如关系代数或codd代数;这些是SQL的来源),理论上也不允许“仅搜索所有字段”之类的事情。当然,实际行为取决于供应商的具体实现。但是在通常情况下是不可能的。为了确保这一点,请检查SELECT运算符的语法(WHERE准确地说是“节”)。

2021-05-10