首页 > 其他 > 详细

一个模糊查询条件问题

时间:2021-03-13 15:43:42      阅读:32      评论:0      收藏:0      [点我收藏+]

 

两个条件,当第二个条件没有值;

 

select * from tb_user where sex = 1 and name like ‘%%‘       查询所有sex=1,后面的模糊查询失效,匹配所有(因为为空串)

select * from tb_user where sex = 1 and name like ‘%  %‘     查询所有的sex=1 而且name= ” ”  匹配空格,与本意相悖,查不到

select * from tb_user where sex = 1 and name like ‘%null%‘    查询所有的sex=1 而且name=null  匹配null, 与本意相悖,查不到 ,而且当不赋值时,传空引用null,如果使用mybatis,在映射文件中会报错

 

以上陷入误区,本意是后面的不赋值, 也就是不作为条件,而不是给null/给空格/给空串

正确表达:  动态sql  //使用if标签, 没有值就不拼接这段sql

<!-- queryMaleUserByUserName 查询男性用户,如果输入了用户名,就按照用户名模糊查询 -->

<select id="queryMaleUserByUserName" parameterType="User" resultType="User">

 

select * from tb_user where sex = 1

<if test="userName!=null and userName!=‘‘">

and user_name like "%"#{userName}"%"

</if>

</select>

 

使用双引号,或使用单引号并且空格,正确

select * from tb_user where sex = 1 and user_name like ‘%‘ #{userName} ‘%‘     

 传入参数后的效果

select * from tb_user where name like ‘%‘ ‘张‘ ‘%‘   (其实是一种拼接的形式了)

以上,使用单引号要有空格 ,如果是双引号则不用,"%"#{userName}"%" ,#{}在传参后给参数拼接上引号,拼的是单引号

 

 

使用单引号,没有空格的情况下下,错误

select * from tb_user where sex = 1 and user_name like ‘%‘#{userName}‘%‘

传入参数的效果,被当做‘?整体去查找,查的是‘?‘,根本没这玩意

select * from tb_user where name like ‘%‘‘张‘‘%‘

 

一个模糊查询条件问题

原文:https://www.cnblogs.com/wenhui2015/p/14528345.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!