模糊查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模糊查询相关的知识,希望对你有一定的参考价值。
select * from teacher where '姓名 like %李%'
查询teacher表中姓名字段中姓李的字段
select * from teacher where 姓名 like '李%
查询teacher表中[姓名]字段所有以'李'开头的记录
select * from teacher where 姓名 like %李'
查询teacher表中[姓名]字段所有以'李'结尾的记录
select * from teacher where 姓名 like '李'
查询teacher表中[姓名]字段所有以'李'开头且只有两个字的记录
分别这样写为什么不对,正确的应怎样写,请大虾指教
根据你的问题描述,你所需要的模糊查询的正确写法有如下几种:
1、查询以某字符开头的数据
例如,查询teacher表中[姓名]字段所有以'李'开头的记录可写为:
select * from teacher where 姓名 like '李%'
2、查询以某字符结尾的数据
例如,查询teacher表中[姓名]字段所有以'李'结尾的记录可写为:
select * from teacher where 姓名 like '%李'
3、查询包含某字符的数据
例如,查询teacher表中[姓名]字段所有包含'李'的记录(不论该字符在开头、结尾、中间)可写为:
select * from teacher where 姓名 like '%李%'
注:以上SQL写法是通用性的写法,像Oracle、Sqlserver、mysql等数据库都是支持的。
拓展资料
SQL语句的各种模糊查询:
一、语法:
SELECT 字段 FROM 表 WHERE 某字段 Like 条件
二、关于语法中的条件,SQL提供了四种匹配模式:
1、%:表示任意0个或多个字符。可匹配任意类型和长度的字符。
2、_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。
3、[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
4、[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
5、查询内容包含通配符时:由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。
参考技术A select * from teacher where '姓名 like %李%'--正确查询teacher表中姓名字段中姓李的字段
select * from teacher where 姓名 like '李%---正确
查询teacher表中[姓名]字段所有以'李'开头的记录
select * from teacher where 姓名 like %李'--正确
查询teacher表中[姓名]字段所有以'李'结尾的记录
select * from teacher where 姓名 like '李'--错误
查询teacher表中[姓名]字段所有以'李'开头且只有两个字的记录
错误的那句这样改正
select * from teacher where 姓名 like '李_'本回答被提问者采纳 参考技术B select * from teacher where 姓名 like '李%'
查询teacher表中姓名字段中姓李的字段
select * from teacher where 姓名 like '李%'
查询teacher表中[姓名]字段所有以'李'开头的记录
select * from teacher where 姓名 like '%李'
查询teacher表中[姓名]字段所有以'李'结尾的记录
select * from teacher where 姓名 like '李_'
查询teacher表中[姓名]字段所有以'李'开头且只有两个字的记录 参考技术C 1.查询teacher表中姓名字段中姓李的字段:
select * from teacher where 姓名 like '%李%'
2.查询teacher表中[姓名]字段所有以'李'开头的记录
select * from teacher where 姓名 like '李%'
3.查询teacher表中[姓名]字段所有以'李'结尾的记录
select * from teacher where 姓名 like '%李'
4.查询teacher表中[姓名]字段所有以'李'开头且只有两个字的记录
select * from teacher where 姓名 like '李%' and len(姓名)=2
看看是不是你想要的啊!!
mybatis中的模糊查询
模糊查询被我们片面的理解为只有一种,其实模糊查询查询包括左模糊查询,右模糊查询和整个模糊查询
左模糊查询:
/**
* 左模糊查询
* @param student
* @return
*/
public List<Student> findSomeStudent(Student student);
<!--左模糊查询-->
<select id="findSomeStudent" resultType="student">
SELECT *from Student WHERE name LIKE ‘‘ #{name } ‘%‘ AND age>#{age}
</select>
/**
* 左模糊查询
*/
@Test
public void find() throws Exception{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sf.openSession();
IStudentDAO mapper = session.getMapper(IStudentDAO.class);
Student student=new Student();
student.setName("飞");
student.setAge(20);
List<Student> students = mapper.findSomeStudent(student);
for (Student item :students){
System.out.println(item.getName());
}
//提交事务
session.commit();
//关闭会话,释放资源
session.close();
}
右模糊查询
/**
* 右模糊查询
* @param student
* @return
*/
public List<Student> findSomeStudent(Student student);
<!--右模糊查询-->
<select id="findSomeStudent" resultType="student">
SELECT *from Student WHERE name LIKE ‘%‘ #{name } ‘‘ AND age>#{age}
</select>
/**
* 右模糊查询
*/
@Test
public void find() throws Exception{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sf.openSession();
IStudentDAO mapper = session.getMapper(IStudentDAO.class);
Student student=new Student();
student.setName("张");
student.setAge(20);
List<Student> students = mapper.findSomeStudent(student);
for (Student item :students){
System.out.println(item.getName());
}
//提交事务
session.commit();
//关闭会话,释放资源
session.close();
}
整个模糊查询
/**
* 整个模糊查询
* @param student
* @return
*/
public List<Student> findSomeStudent(Student student);
<!--整个模糊查询-->
<select id="findSomeStudent" resultType="student">
SELECT *from Student WHERE name LIKE ‘%‘ #{name } ‘%‘ AND age>#{age}
</select>
/**
* 整个模糊查询
*/
@Test
public void find() throws Exception{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sf.openSession();
IStudentDAO mapper = session.getMapper(IStudentDAO.class);
Student student=new Student();
student.setName("张");
student.setAge(20);
List<Student> students = mapper.findSomeStudent(student);
for (Student item :students){
System.out.println(item.getName());
}
//提交事务
session.commit();
//关闭会话,释放资源
session.close();
}
模糊查询的sql语句三种形式
前二种不会引起sql注入,第三种会引起sql注入
SELECT *from Student WHERE name LIKE concat(‘%‘,#{name },‘%‘ AND age>#{age})
SELECT *from Student WHERE name LIKE ‘%‘ #{name } ‘%‘ AND age>#{age}
SELECT *from Student WHERE name LIKE ‘%${name}%‘ AND age>#{age}
以上是关于模糊查询的主要内容,如果未能解决你的问题,请参考以下文章