MySQLはIF関数を使用してwhere条件を動的に実行します

IF関数

IF(式、expr_true、expr_false);

MySQLのIF()関数は3つの式を受け入れます。最初の式が真で、ゼロでもNULLでもない場合、2番目の式を返します。それ以外の場合は、3番目の式を返します。使用されるコンテキストに応じて、数値または文字列値を返します。

WHERE条件でのIF関数の使用

最初にSQLを見てください。

t_book から book_name、read_status 選択します

結果は次のとおりです。

read_statusフィールドはステータスの読み取りを意味し、次の値があります:0(未読)、1(読み取り中)、および2(読み取り中)。

次に、IF関数を使用してクエリを実行します。

#未読問い合わせ予約
 SELECT BOOK_NAME、READ_STATUS から t_book WHERE  IF- 1  =  0、trueに、READ_STATUS =  0)。

#で問い合わせ読書
 SELECT BOOK_NAME、READ_STATUS から t_book WHERE  IF- 1  =  1 trueに、READ_STATUS =  1)。

#クエリは予約を読み取り有する
 SELECT、READ_STATUS BOOK_NAMEをから t_book WHERE  IF- 1  =  2、trueに、READ_STATUS =  2)。

#查询全部的ブック
 選択 BOOK_NAME、READ_STATUS から t_book ここ IF- 1  =  - 1、真、READ_STATUS =  - 1)。

JAVAの使用

/ ** 
 *に基づいてブック
 * @param readStatus 
 * @return 
 * / 
@Query(value = "select book_name、read_status from t_book where IF(-1 =:readStatus、true、read_status = readStatus)"、nativeQuery = true 
リスト <TBook> queryByReadStatus(@Param( "readStatus")String readStatus);

このようにして、readStatusの値を渡すことにより、read_status条件を実行するかどうかを制御できます。値が-1の場合、read_status = -1条件は実行されませんが、trueになります。 。

 

おすすめ

転載: www.cnblogs.com/codecat/p/12103250.html