在mysql中if()函数的用法类似于java中的三目表达式,其用处也比较多,具体语法如下: IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,
则返回expr3的值。
mysql> select name,if(sex=0,'女','男') as sex from student; +-------+-----+ | name | sex | +-------+-----+ | name1 | 女 | | name2 | 女 | | name3 | 男 | | name4 | 女 | +-------+-----+ 4 rows in set (0.00 sec)也可做条件查询: 假入传入时间不为空,则进行有效期判断 传入如果为空,则不进行判断
<select id="queryBuyingLeadsList" resultType="com.esgov.gzwsbs.vo.companyBuyingLeads.CompanyBuyingLeadsVo" > select c.id as id, c.title as title, c.industry_type as industryType, c.industry_name as industryName, c.details as details, c.begin_effective_time as beginEffectiveTime, c.end_effective_time as endEffectiveTime, c.telephone as telephone, c.creater_time as createrTime, c.update_time as updateTime, e.enterprise_name as enterpriseName from company_buying_leads c left join enterprise_info_all e on e.id=c.enterprise_id where c.record_status='1' <if test="industryType !=null and industryType !='' "> and industry_type like concat('%',#{industryType},'%') </if> <!--如果时间不为空则过滤掉不在有效期的--> and if(c.begin_effective_time is NOT NULL, (date_format(#{thisDay},'%y-%m-%d') >= date_format(c.begin_effective_time,'%y-%m-%d')),1=1) and if(c.end_effective_time is NOT NULL ,(date_format(#{thisDay},'%y-%m-%d') <= date_format(c.end_effective_time,'%y-%m-%d')) ,1=1) order by c.update_time desc </select>