in

¿Cuál es el propósito de usar WHERE 1 = 1 en declaraciones SQL?

apple touch icon@2

La gente lo usa porque es inherentemente perezoso al crear consultas SQL dinámicas. Si comienzas con un "where 1 = 1" entonces todas tus cláusulas adicionales comienzan con "and" y no tienes que darte cuenta.

No es que haya nada de malo en ser inherentemente vago. He visto listas doblemente enlazadas en las que una lista «vacía» consta de dos nodos centinela y comienzas a procesar en el first->next hasta last->prev inclusivo.

En realidad, esto eliminó todo el código de manejo especial para eliminar first y last nodos. En esta configuración, cada El nodo era un nodo intermedio ya que no pudiste eliminar first o last. Se desperdiciaron dos nodos, pero el código era más simple y (ligeramente) más rápido.

El único otro lugar en el que he visto la construcción «1 = 1» es en BIRT. Los informes suelen utilizar parámetros posicionales y se modifican con Javascript para permitir todos los valores. Entonces la consulta:

select * from tbl where col = ?

cuando el usuario selecciona "*" para el parámetro que se utiliza para col se modifica para leer:

select * from tbl where ((col = ?) or (1 = 1))

Esto permite utilizar la nueva consulta sin tener que jugar con los detalles de los parámetros posicionales. Todavía hay exactamente uno de esos parámetros. Cualquier DBMS decente (por ejemplo, DB2 / z) optimizará esa consulta para eliminar básicamente la cláusula por completo antes de intentar construir un plan de ejecución, por lo que no hay compensación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Biblioteca C –

rfizA8KVn394k82PVDSxoG 1200 80

Huevos de Pascua de la película de Sonic: cada cameo y referencia a los juegos