mysql 模糊查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 模糊查询相关的知识,希望对你有一定的参考价值。

没有输入内容,点一下查询,就出来了所有的内容?
而且只要输入name中的某个数据,所有的内容都出来了。
$exec="select * from tablename where name like '%$name%'";
我数据表中就有一项name。
如果什么都不输入,点“查询”也不会出现任何结果该怎么写?

1、如果你什么也没有输入的话,sql语句就如下:
select * from tablename where name like '%%';
这样的话就是 name 等于任何字符都会被查出,当然所有内容都会出来了。

2、这不是问题,从查询的设计角度看,什么都不输入自然是要匹配所有数据,相反输入了东西就是匹配它了。

*****************
补充:
*****************
如果你想什么都不输入的时候什么也不返回的话方法如下:
在后台写两个sql,类似如下
if ($name == "")
$exec="select * from tablename where 1=2";
else
$exec="select * from tablename where name like '%$name%'";


---
以上,希望对你有所帮助。
参考技术A 我描述下
应该是 输入什么就出什么(这儿有2个方向,1.模糊查询2.精确查询)
然后不输入就查询全部的

根据你的描述是第一个应该
select * from tablename where name like ''%''+$name+''%''

你试下
大概就是这样的

如果什么都不输入,点“查询”也不会出现任何结果该怎么写?
那就不要用like 直接用=号
把where 后的改为 name = '$name'

因为数据多了like的效能不好
参考技术B 给你个思路吧,如果什么都不输入,那么$name的值就是空值,你可以在前台加判断,如果是空值的话那返回就可以了 参考技术C 查询姓名由5个字母构成的学生记录
SELECT *
FROM stu
WHERE sname LIKE '_____';
模糊查询必须使用LIKE关键字。其中 “_”匹配任意一个字母,5个“_”表示5个任意字母。
参考技术D 模糊查询不复杂,你的表达能力倒是个问题

MySQL联合查询及模糊查询

参考技术A a LEFT JOIN b ON a.id = b.id。

a.name LIKE CONCAT(CONCAT("%","param.name"),"%")。

import com.baomidou.mybatisplus.core.metadata.IPage;

dao,Ipage<entity> pageRecord(Ipage<entity> page, Param param)
xml,sql语句不需要做显式分页,Ipage会代替做。
service,Ipage<entity> res = dao.pageRecord(new Page<>(current, size), param); int sum = res.getTotal(); List<entity> records = res.getRecords();

在mapper中直接分页没法得到数据总数,此时可以使用MyBatis的自定义分页Ipage,Ipage<entity> page(new Page<>(current, size)),赋值分页参数,返回用Ipage<entity>接收,总数在Ipage.getTotal()里面,数据在Ipage.getRecords()里面。
Ipage会先根据条件执行count(*),再执行SQL获取数据。

以上是关于mysql 模糊查询的主要内容,如果未能解决你的问题,请参考以下文章

java mysql模糊查询有问题 请纠错

mysql 联合模糊查询问题?

mysql 模糊查询

如何用MYSQL模糊查询?

php+mysql模糊查询功能

mysql模糊查询固定某个字符