对数据库中date类型字段进行条件查询以及sql中or和and的执行顺序
2019-03-21 09:11
399 查看
1、问题:
1、对数据库中date类型字段进行条件查询 2、sql中or和and的执行顺序
1、对数据库中date类型字段进行条件查询
<if test="forecastTime != null and forecastTime != ''"> and DATE_FORMAT(forecast_time,'%Y-%m-%d') = #{forecastTime,jdbcType=VARCHAR} </if>
DATE_FORMAT函数在查询的时候把date类型的字段转换为字符串类型,相当于java中的SimpleDateFormat这个类,
‘%Y-%m-%d’ 这个是转换模板,forecastTime则为前端传过来的String 类型的日期
详情见 https://www.cnblogs.com/awzf/p/9835156.html
2、sql中or和and的执行顺序
select <include refid="Base_Column_List"/> from water_forecast_record where (is_pass = 1 or is_pass = 2)//这里加不加括号是两种查询情况 <if test="forecastTime != null and forecastTime != ''"> and DATE_FORMAT(forecast_time,'%Y-%m-%d') = #{forecastTime,jdbcType=VARCHAR} </if> <if test="needMeeting != null"> and need_meeting = #{needMeeting,jdbcType=INTEGER} </if> <if test="reportPeople != null and reportPeople != ''"> and report_people like concat("%",#{reportPeople,jdbcType=VARCHAR},"%") </if> <if test="checkPeople != null and checkPeople != ''"> and check_people like concat("%",#{checkPeople,jdbcType=VARCHAR},"%") </if> </select>
关系型运算符优先级高到低为:NOT >AND >OR where (is_pass = 1 or is_pass = 2) 这里如果不加()or是会最后执行的
参考文章:https://blog.csdn.net/bingguang1993/article/details/79657256
相关文章推荐
- SQL性能优化-查询条件与字段分开执行,union代替in与or,存储过程代替union
- Spring-JDBC:在使用JdbcTemplate进行条件查询时没有返回数据,但是sql直接在数据库中执行是有数据返回的。
- java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法
- 关于实体为Date类型的字段,如何用model.find(" date>? ",param)方法进行查询?
- SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
- MySql数据库,对varchar类型字段str进行where str=0条件查询时,查询结果是什么
- 搬砖中的小事之代码(六)--列表显示的字段与数据库中字段类型不匹配,需要在查询后进行简单转换
- 根据数据库表名查询该表字段名、字段类型、以及注释
- JavaSQL配置文件查询条件匹配字段是Date时注意事项
- Microsoft SQL Server中条件字段是Nvarchar类型的,条件有中文的无法查询的原因及处理方法
- 存储过程中sql语句按变量进行判断执行相应的查询条件
- 关于用Hibernate执行sql查询,字符字段类型只返回第一个字节的问题
- java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法
- SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
- createSQLQuery 查询数据库类型为char的字段时
- Oracle clob类型的字段作为查询条件的sql语句写法
- 关于sql中or与and的执行顺序
- Hibernate多条件查询以及与java+sql 之间数据类型转换关系
- 数据库text类型字段作为查询条件的终极解决办法
- SQL语句中的AND和OR执行顺序问题