admin管理员组

文章数量:1620925

最近遇到了一个问题:搜索框怎么实现?具体来说,数据库查询层面怎么实现?恰好最近在做的项目中也有这个功能,于是进行了一些探索和尝试。

功能分析

搜索框一般是对一个或多个字段进行模糊/精确匹配的一个功能。最简单的搜索框是对一个字段进行精确匹配,直接WHERE然后=就行了,要实现模糊匹配,可以把=换成LIKE,然后把条件加上通配符%。这个方法同样适用于下拉框(性质和搜索是一样的,只是前端已经预设好查询的内容)。

比较复杂但也是比较常见的搜索框,一般是多个字段的模糊/精确匹配。这篇文章主要讨论的就是这种比较复杂的搜索框。从一个字段延伸到多个字段,最显而易见的办法就是用OR把各个字段连接起来,用=/LIKE作判断。

(笨方法)想当然法

思路

想当然法是单个搜索框的延伸,也是我最开始使用的方法。用一个表(可以把它叫做搜索表),把需要搜索的信息(字段)全部放在一起。查询的时候用=/LIKE作判断,用OR把各个字段连接起来。

实现

SQL

SELECT * FROM student
WHERE
name LIKE '%2018100%' OR
student_number LIKE '%2018100%' OR
id_card LIKE '%2018100%' OR
phone LIKE '%2018100%' OR
dorm LIKE '%2018100%'

Java

(最后加了一个LIMIT做分页)

public String search(String content, String college, int page, int pageSize) {
   
    
    String sql = "SELECT name,student_number,college,major FROM student_info_2019";
    if (!"".equals(college) || !"".equals(content)) {
   
        sql += " WHERE";
    }
    if (!"".equals(college))

本文标签: 思路数据库