要模糊查找某个时间段的数据,可以使用MySQL的LIKE运算符和通配符%来实现。以下是修改后的SQL语句:

<select id="getTime" resultMap="ShopkeeperchangeMap">
    SELECT s.sid,
    staff.staffname,
    b1.branchname,
    d1.deptname,
    r1.rolename,
    b2.branchname as newbranchname,
    d2.deptname as newdeptname,
    r2.rolename as newrolename,
    s.transfertime,
    s3.staffname as st
    FROM shopkeeperchange s
    left JOIN staff ON staff.staffid = s.staffid
    left JOIN staff s3 ON s3.staffid = s.transferper
    LEFT JOIN branch b1 ON b1.branchid = s.branchid
    LEFT JOIN department d1 ON d1.deptid = s.deptid
    LEFT JOIN role r1 ON r1.roleid = s.roleid
    LEFT JOIN branch b2 ON b2.branchid = s.newbranchid
    LEFT JOIN department d2 ON d2.deptid = s.newdeptid
    LEFT JOIN role r2 ON r2.roleid = s.newroleid
    LEFT JOIN stafftransfer st ON s.staffid = st.staffid
    <where>
        <if test="transfertime != null">
            s.transfertime LIKE CONCAT('%', #{transfertime}, '%')
        </if>
        st.state = 2 AND b1.branchname != '' AND b2.branchname != ''
    </where>
</select>

请注意,上述代码中使用了MySQL的CONCAT函数来连接通配符和变量,以实现模糊匹配。

select id=getTime resultMap=ShopkeeperchangeMap SELECT ssid staffstaffname b1branchname d1deptname r1rolename b2branchname as newbranchname d2deptname as newdeptname r2rolename

原文地址: https://www.cveoy.top/t/topic/jd4P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录