在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>