sql 动态模糊查询
时间: 2023-07-20 21:16:31 浏览: 85
动态模糊查询是指根据用户输入的关键字进行模糊匹配,从数据库中查询符合要求的数据。在 SQL 中,模糊查询一般使用 LIKE 关键字实现,其语法如下:
```
SELECT * FROM table_name WHERE column_name LIKE '%keyword%';
```
其中,`table_name` 表示要查询的表名,`column_name` 表示要匹配的列名,`keyword` 表示关键字,`%` 表示通配符,可以匹配任意字符。使用 `%` 将关键字包裹起来,即可实现模糊匹配。
如果要进行动态模糊查询,可以将用户输入的关键字拼接到 SQL 语句中,例如:
```
SELECT * FROM table_name WHERE column_name LIKE '%#{keyword}%';
```
其中,`#{keyword}` 表示动态获取的关键字,可以根据具体的编程语言和框架进行替换。
相关问题
动态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", "张三");
```
这样就可以根据姓名模糊查询用户了。