it-swarm-fr.com

Pourquoi quelqu'un voudrait-il mettre `Où 1 = 1` dans une requête?

Je suis tombé sur une vue dans notre base de données aujourd'hui où la première déclaration de la clause WHERE était where 1 = 1. Ce retour ne devrait-il pas être vrai pour chaque enregistrement? Pourquoi quelqu'un voudrait-il écrire cela s'il ne filtrait aucun enregistrement?

18
goric

Certains constructeurs de requêtes dynamiques incluent cette condition de sorte que toutes les conditions "réelles" puissent être ajoutées avec un AND sans effectuer un contrôle comme if (first condition) 'WHERE' else 'AND'.

40
BenV

Si vous avez de nombreux points de construction de la déclaration SQL dans votre programme qui génèrent similaire requêtes, vous pouvez marquer l'examen examiné par ce tour. Si la phrase consiste à compter, vous pouvez utiliser le code ci-dessous afin que vous puissiez grep out 42 à partir d'un journal SQL.

select count(42) from table
5
ern0

Il fournit une situation qui est toujours vraie, de sorte que cela n'affecte pas les résultats, mais vous savez qu'il y a un élément de la clause WHERE déjà.

4
SchwartzE