mybatis LIKE

    <sql id="selectId">
        `ID` AS id,
        `NAME` AS name,
        `DESCRIPTION` AS description,
        `TYPE` AS type,
        `CAPACITY` AS capacity
    </sql>
    <select id="getStorageList" parameterType="String" useCache="false" resultType="StorageTO">
        select
        <include refid="selectId"/>
        from STORAGE_INFO
        <where>
            1 = 1
            <if test="name != null and name != ''">
                `NAME` LIKE CONCAT('%',#{name},'%')
            </if>            
        </where>
        ORDER BY `ID` DESC 
    </select>

扩展:mysql like查询,_和%查询无效的问题 

1、表中有三条数据,其中NAME可以有特殊字符

2、LIKE查询,查询字符串为_和%

可以看到,查询结果并没有只查出来符合的数据,是将全部数据都查出来了,因为在like查询中,使用%和_来代表任意多个字符和一个字符 

3、解决办法,可以使用escape关键字来解决,比如下面的sql

解释:首先将查询字符串修改为  /%,ESCAPE '/',意思是指明查询字符串中的/后面的字符是普通字符,而不是通配符,在这里/后面是%

下划线和%同理

原文地址:https://www.cnblogs.com/boshen-hzb/p/9454060.html