我试图在mySQL的整个表中搜索一个字符串。
我想搜索表的所有字段和所有主菜,返回包含指定文本的每个完整条目。
我不知道如何轻松地搜索多个字段。详细信息如下:
该表是“客户端”。它具有大约30个字段和800个条目,太多了以至于无法在浏览器中一次全部显示。我想搜索的域名(即“玛丽”),但它可能是在shipping_name field或billing_name field,或email字段等
shipping_name field
billing_name field
email
我想在所有字段中搜索包含字符串“ Mary”的所有条目。我认为这应该可行,但不可行:
SELECT * FROM `clients` IN 'Mary'
尝试这样的事情:
SELECT * FROM clients WHERE CONCAT(field1, '', field2, '', fieldn) LIKE "%Mary%"
您可能需要查看SQL文档,以获取有关字符串运算符和正则表达式的其他信息。
编辑:NULL字段可能存在一些问题,因此以防万一,您可能想使用IFNULL(field_i, '')而不是field_i
IFNULL(field_i, '')
field_i
区分大小写 :您可以使用不区分大小写的排序规则或类似的方法:
... WHERE LOWER(CONCAT(...)) LIKE LOWER("%Mary%")
只搜索所有字段 :我相信没有一种方法可以使SQL查询在没有明确声明要搜索的字段的情况下遍历所有字段。原因是存在关系数据库的理论和操纵关系数据的严格规则(某些东西例如关系代数或codd代数;这些是SQL的来源),理论上也不允许“仅搜索所有字段”之类的事情。当然,实际行为取决于供应商的具体实现。但是在通常情况下是不可能的。为了确保这一点,请检查SELECT运算符的语法(WHERE准确地说是“节”)。
SELECT
WHERE