带动态条件的模糊查询SQL
这段 XML 来自 MyBatis 的映射文件,是一条带动态条件的模糊查询 SQL。
核心在:
and name like concat('%', #{name}, '%')
-
%
是 SQL 的通配符
在LIKE
语句里%
代表“任意长度(包括 0 个)的字符序列”。%abc
→ 结尾是 abcabc%
→ 开头是 abc%abc%
→ 中间任意位置出现 abc(前后都模糊)
-
代码中的用法
concat('%', #{name}, '%')
把%
拼到传入的name
前后,形成
%张三%
这样的字符串。
于是 SQL 最终变成:... where name like '%张三%'
就能查出所有姓名里包含“张三”的员工记录。
-
注意占位符
你的片段里少写了参数名,正确的写法应为:and name like concat('%', #{name}, '%')
总结:两个 %
用来实现“前后模糊匹配”,让查询条件更宽松,只要字段里包含输入的名字就能命中。