您的位置:首页 > 数据库

关于sql的模糊查询的问题

2017-08-03 19:35 866 查看
问题描述:在mybatis中的xml文件中,使用sql语句完成在两个关键字的模糊查询,但是在查询的时候,查询的结果不全,因为有些数据中的关键字是空的,这种信息就搜不到,其他的都可以显示。

原始代码:

select id="queryPassMember" parameterType="map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from shop_employee_relation
<where>
<if test="shopId != null">
SHOP_ID= #{shopId}
and delete_flag=1
</if>
<if test="mobile !=null ">
AND shopkeeper_phone LIKE
concat(concat('%',#{mobile}),'%')
</if>
<if test="memberName !=null ">
AND member_name LIKE concat(concat('%',#{memberName}),'%')
</if>
</where>
order by ROLE asc
</select>


 

  由于mybatis使用的不是很流畅,所以想了很久,查了不少的模糊查询的语句,但是也没有解决,最后找到了原因

<select id="queryPassMember" parameterType="map" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from shop_employee_relation
        <where>
            <if test="shopId != null">
                SHOP_ID= #{shopId}
                and delete_flag=1
            </if>
            <if test="mobile !=null and mobile !=''">
                AND shopkeeper_phone LIKE
                concat(concat('%',#{mobile}),'%')
            </if>
            <if test="memberName !=null and memberName !=''">
                AND member_name LIKE concat(concat('%',#{memberName}),'%')
            </if>
        </where>
        order by ROLE asc
    </select>
这样就实现了有关键字的时候按照关键字查询,没有关键字的时候就进行全部查询,杜绝了当一条数据中没有其关键字的时候漏查的现象。

               题外话:推荐一首歌:林宥嘉的《成全》,感觉还行,画面感很强。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bug