DBAPI的SQL实现模糊查询的3种方案
DBAPI的SQL实现模糊查询的3种方案
LIKE 查询
SQL 中的 LIKE 查询可以实现模糊查询,比如查询名字中包含“张”的记录。
select * from student where name like '%张%'
在 API 中获取参数 name
,并将其传入 SQL 语句中,有以下 3 种方法。
方案一:使用原生 SQL 字符串拼接
MySQL
select * from student where name like CONCAT('%', #{name}, '%')
这里使用了 MySQL 的 CONCAT 函数,将百分号 %
与参数 name
进行拼接,实现模糊查询。
Oracle
select * from student where name like '%' || #{name} || '%'
在 Oracle 中,使用双竖线 ||
进行字符串拼接。
PostgreSQL
select * from student where name like '%' || #{name} || '%'
PostgreSQL 中也可以使用双竖线 ||
进行字符串拼接。
SQL Server
select * from student where name like '%' + #{name} + '%'
在 SQL Server 中,使用加号 +
进行字符串拼接。
方案二:使用动态 SQL 的 bind 标签
DBAPI支持类似mybatis的动态SQL标签语法,通过 bind
标签,将参数 name
拼接模糊查询的通配符%
,并生成新的变量 pattern
。
完整SQL示例如下:
<bind name="pattern" value="'%' + name + '%'" />
select * from student where name like #{pattern}
方案三:使用参数处理插件
- 访问插件市场,下载
字符串拼接插件
,上传到 DBAPI 的extlib
目录或者lib
目录下,重启 DBAPI 服务。
-
在
全局插件-参数处理
中选择字符串拼接插件
。插件参数填写
{"fields":["name"]}
。使用此插件后,系统会自动给
name
参数值的首尾拼接上%
字符。
- SQL 中的like查询可以直接使用参数
#{name}
,不用拼接通配符。
select * from student where name like #{name}