Función IF
IF (expresión, expr_true, expr_false);
La función IF () de MySQL acepta tres expresiones. Si la primera expresión es verdadera, no cero y no NULL, devolverá la segunda expresión. De lo contrario, devuelve la tercera expresión. Dependiendo del contexto en el que se usa, devuelve un valor numérico o de cadena.
Uso de la función IF en condición WHERE
Primero mira un SQL:
seleccione book_name, read_status de t_book;
Los resultados son los siguientes:
El campo read_status significa estado de lectura y tiene los siguientes valores: 0 (no leído), 1 (lectura) y 2 (lectura).
Lo siguiente usa la función IF para consultar:
# No leído libro consulta SELECT BOOK_NAME, READ_STATUS de t_book el DONDE SI ( - 1 = 0 , true, READ_STATUS = 0 );
# Consulta el libro de lectura en el SELECT BOOK_NAME, READ_STATUS de t_book el DONDE SI ( - 1 = 1 , true, READ_STATUS = 1 );
# Las consultas han leído el libro del SELECT BOOK_NAME, READ_STATUS de t_book el DONDE SI ( - 1 = 2 , true, READ_STATUS = 2 );
# 查询 全部 的 book seleccione book_name, read_status del t_book donde IF ( - 1 = - 1 , true, read_status = - 1 );
Uso de 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 ) Lista <TBook> queryByReadStatus (@Param ("readStatus") String readStatus);
De esta manera, puede controlar si la condición read_status se ejecuta pasando el valor de readStatus. Cuando el valor es -1, la condición read_status = -1 no se ejecuta, pero es verdadera, lo que equivale a ignorar la condición read_status y lograr el propósito de consultar el libro en todos los estados. .