sql 动态模糊查询
时间: 2023-07-20 17:16:32 浏览: 83
动态模糊查询是根据用户输入的关键字进行模糊匹配查询。在 SQL 中,可以使用 LIKE 关键字实现模糊查询。
例如,假设要查询员工表中姓名中包含关键字 "张" 的所有员工,可以使用以下 SQL 语句:
```
SELECT * FROM employee WHERE name LIKE '%张%'
```
其中 % 表示任意字符,即表示在姓名中可以出现任意字符,包括 "张" 前面和后面的字符。这样就可以实现动态模糊查询了。
如果要查询员工表中姓名中以关键字 "张" 开头的所有员工,可以使用以下 SQL 语句:
```
SELECT * FROM employee WHERE name LIKE '张%'
```
其中 % 表示任意字符,但是放在开头的时候,表示以该字符开头。这样就可以实现以关键字 "张" 开头的动态模糊查询了。
相关问题
动态sql 模糊查询
动态SQL是指在SQL语句中根据条件的不同而动态生成不同的SQL语句的技术。在动态SQL中,可以使用一些特定的标签和函数来处理特殊字符和实现模糊查询。
在MyBatis中,常用的动态SQL标签包括if、where、choose、when、otherwise、set、foreach等。这些标签可以根据条件的不同来决定是否包含某个SQL片段。比如,如果要进行模糊查询,可以使用concat函数将查询条件拼接成模糊匹配的格式。
下面是两种实现模糊查询的方式:
方式1:
```xml
<select id="queryBlogIf" resultType="blog" parameterType="map">
select * from mybatis.blog where 1 = 1
<if test="title!=null">
and title like #{title}
</if>
</select>
```
在这个例子中,使用了if标签来判断是否有模糊查询的条件,如果有,则将条件拼接到SQL语句中。
方式2:
```xml
<select id="queryBlogIf" resultType="blog" parameterType="map">
select * from mybatis.blog where 1 = 1
<if test="title!=null">
and title like concat('%',#{title},'%')
</if>
</select>
```
在这个例子中,使用了concat函数将查询条件拼接成模糊匹配的格式。
通过使用这些动态SQL标签和函数,我们可以根据不同的条件来动态生成符合需求的SQL语句,实现灵活的模糊查询功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [动态SQL 模糊查询 联表查询](https://blog.csdn.net/Luckydogs3036/article/details/125130893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [mybatis动态sql模糊查询方法](https://blog.csdn.net/niceYF/article/details/123370626)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
mybatis动态sql模糊查询
MyBatis提供了动态SQL的功能,可以根据不同的条件组装不同的SQL语句,实现灵活的查询操作。下面是一个使用动态SQL实现模糊查询的示例:
```
<select id="findUserByName" parameterType="String" resultType="User">
SELECT * FROM user
<where>
<if test="name != null and name != ''">
AND name like concat('%', #{name}, '%')
</if>
</where>
</select>
```
这个示例中,使用了`<where>`和`<if>`标签来实现动态SQL。`<where>`标签会在其中包含的条件成立时,自动添加一个WHERE关键字。`<if>`标签根据条件动态生成SQL语句,这里是根据`name`参数是否为空来判断是否需要添加模糊查询条件。
其中`#{name}`是MyBatis的占位符语法,表示接收一个参数,可以直接在SQL语句中使用。这里使用`concat`函数拼接了模糊查询的通配符,实现了模糊查询的功能。
使用这个示例,可以调用如下代码来查询用户:
```
List<User> userList = sqlSession.selectList("findUserByName", "张三");
```
这样就可以根据姓名模糊查询用户了。
阅读全文