sql >> Base de Datos >  >> RDS >> SQLite

CASO SQLite

Resumen: en este tutorial, aprenderá sobre SQLite CASE expresión para agregar la lógica condicional a una consulta.

El CASE de SQLite expresión evalúa una lista de condiciones y devuelve una expresión basada en el resultado de la evaluación.

El CASE expresión es similar a IF-THEN-ELSE declaración en otros lenguajes de programación.

Puedes usar el CASE expresión en cualquier cláusula o declaración que acepte una expresión válida. Por ejemplo, puede usar el CASE expresión en cláusulas como WHERE , ORDER BY , HAVING , SELECT y declaraciones como SELECT , UPDATE y DELETE .

SQLite proporciona dos formas de CASE expresión:simple CASE y busqué CASE .

SQLite simple CASE expresión

El CASE simple expresión compara una expresión con una lista de expresiones para devolver el resultado. Lo siguiente ilustra la sintaxis del simple CASE expresión.

CASE case_expression
     WHEN when_expression_1 THEN result_1
     WHEN when_expression_2 THEN result_2
     ...
     [ ELSE result_else ] 
ENDCode language: SQL (Structured Query Language) (sql)

El CASE simple expresión compara la case_expression a la expresión aparece en el primer WHEN cláusula, when_expression_1 , por la igualdad.

Si case_expression es igual a when_expression_1 , el simple CASE devuelve la expresión en el correspondiente THEN cláusula, que es el result_1 .

De lo contrario, el simple CASE expresión compara la case_expression con la expresión en el siguiente WHEN cláusula.

En caso de que no haya case_expression coincide con when_expression , el CASE expresión devuelve el result_else en el ELSE cláusula. Si omite el ELSE cláusula, el CASE expresión devuelve NULL.

El CASE simple expresión utiliza evaluación de cortocircuito. En otras palabras, devuelve el resultado y deja de evaluar otras condiciones tan pronto como encuentra una coincidencia.

Simple CASE ejemplo

Echemos un vistazo a los customers tabla en la base de datos de ejemplo.

Supongamos que tiene que hacer un informe de los grupos de clientes con la lógica de que si un cliente se ubica en los EE. UU., este cliente pertenece al grupo nacional, de lo contrario, el cliente pertenece al grupo extranjero.

Para hacer este reporte, usas el simple CASE expresión en el SELECT declaración de la siguiente manera:

SELECT customerid,
       firstname,
       lastname,
       CASE country 
           WHEN 'USA' 
               THEN 'Domestic' 
           ELSE 'Foreign' 
       END CustomerGroup
FROM 
    customers
ORDER BY 
    LastName,
    FirstName;Code language: SQL (Structured Query Language) (sql)

Pruébalo

SQLite buscó CASE expresión

El CASE buscado expresión evalúa una lista de expresiones para decidir el resultado. Tenga en cuenta que el simple CASE expresión solo compara la igualdad, mientras que el CASE buscado expresión puede usar cualquier forma de comparación.

A continuación se ilustra la sintaxis del CASE buscado expresión.

CASE
     WHEN bool_expression_1 THEN result_1
     WHEN bool_expression_2 THEN result_2
     [ ELSE result_else ] 
ENDCode language: SQL (Structured Query Language) (sql)

El CASE buscado expresión evalúa las expresiones booleanas en la secuencia especificada y devuelve el resultado correspondiente si la expresión se evalúa como verdadera.

En caso de que ninguna expresión se evalúe como verdadera, el CASE buscado expresión devuelve la expresión en ELSE cláusula si se especifica. Si omite el ELSE cláusula, el CASE buscado expresión devuelve NULL .

Similar al simple CASE expresión, el CASE buscado expresión detiene la evaluación cuando se cumple una condición.

Buscado CASE ejemplo

Usaremos las tracks mesa para la demostración.

Suponga que desea clasificar las pistas en función de su duración, como menos de un minuto, la pista es corta; entre 1 y 5 minutos, el track es medio; más de 5 minutos, la pista es larga.

Para lograr esto, utiliza el CASE buscado expresión de la siguiente manera:

SELECT
	trackid,
	name,
	CASE
		WHEN milliseconds < 60000 THEN
			'short'
		WHEN milliseconds > 60000 AND milliseconds < 300000 THEN 'medium'
		ELSE
			'long'
		END category
FROM
	tracks;Code language: SQL (Structured Query Language) (sql)

Pruébalo

En este tutorial, ha aprendido sobre SQLite CASE expresión para formar lógica condicional dentro de una consulta SQL.