MySQL usa la función IF para ejecutar dinámicamente donde las condiciones

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

 

Supongo que te gusta

Origin www.cnblogs.com/codecat/p/12103250.html
Recomendado
Clasificación