zoukankan      html  css  js  c++  java
  • MySQL使用IF函数来动态执行where条件

    IF函数

    IF(expression ,expr_true, expr_false);

    MySQL的IF()函数,接受三个表达式,如果第一个表达式为true,而不是零且不为NULL,它将返回第二个表达式。否则,它返回第三个表达式。根据使用它的上下文,它返回数字或字符串值。

    IF函数在WHERE条件中的使用

    先来看一个SQL:

    select book_name,read_status from t_book;

    结果如下:

    read_status字段意思是阅读状态,有以下几个值: 0(未阅读),1(阅读中),2(已阅读)。

    下面使用IF函数来查询:

    # 查询未阅读的book
    select book_name,read_status from t_book where IF(-1 = 0, true, read_status = 0);

    # 查询阅读中的book
    select book_name,read_status from t_book where IF(-1 = 1, true, read_status = 1);

    # 查询已阅读的book
    select book_name,read_status from t_book where IF(-1 = 2, true, read_status = 2);

    # 查询全部的book
    select book_name,read_status from t_book where IF(-1 = -1, true, read_status = -1);

    JAVA使用

    /**
     * 根据阅读状态来查询book
     * @param readStatus
     * @return
     */
    @Query(value = "select book_name,read_status from t_book where IF(-1 = :readStatus, true, read_status = readStatus)", nativeQuery = true)
    List<TBook> queryByReadStatus(@Param("readStatus") String readStatus);

    这样可以通过传入readStatus的值来控制是否执行read_status条件,当传值为-1时,不执行 read_status = -1 条件,而是执行 true,相当于忽略了read_status条件,达到查询全部状态的book目的。

  • 相关阅读:
    python多线程
    python Queue
    PHP curl 模拟登陆
    Smarty 插件开发
    Smarty 使用继承方式实现配置
    Smarty include使用
    MongoDB初探系列之二:认识MongoDB提供的一些经常使用工具
    Ubuntu 12.10 安装JDK7
    第17期中国智能家居主题沙龙将于5月23日在京举行
    重温 Win32 API ----- 截屏指定窗体并打印
  • 原文地址:https://www.cnblogs.com/codecat/p/12103250.html
Copyright © 2011-2022 走看看