尝试这样的事情:
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
准确地说是“节”)。