Where 1=1 SQL
In SQL queries wordt soms gebruik gemaakt van WHERE 1=1. Er zijn 2 algemene redenen waarom dit wordt gebruikt:
- commenten van een voorwaarde in de WHERE clause
- dynamisch SQL
Ten eerst zorgt het ervoor dat je gemakkelijk voorwaarden in een WHERE clause kunt ‘commenten’. Je weet namelijk zeker dat er een WHERE staat in je SQL statement en vervolgens voeg je extra voorwaarden toe met AND. Je hoeft je dan niet meer druk te maken of het de eerste voorwaarde in de WHERE clause is en of je WHERE of AND moet gebruiken.
Een voorbeeld van een SQL query is:
[sql]
SELECT *
FROM Producten
WHERE 1=1
AND ProductCategorie = ‘Fietsen’
— AND Kleur = ‘Blauw’
AND Prijs > 500
[/sql]
Iedere voorwaarde wordt op deze manier op een nieuwe regel geplaatst waardoor je een bepaalde voorwaarde makkelijk kunt ‘commenten’ door – – aan het begin van de regel te zetten. In dit geval is Kleur = ‘Blauw’ gecomment.
Ten tweede wordt het gebruikt voor dynamisch SQL. Dynamisch SQL zorgt ervoor dat SQL statements tijdens run time worden gegenereerd. De SQL statements worden binnen een programma gebruikt. Door gebruik te maken van WHERE 1=1 kunnen alle voorwaarden gegenereerd worden met AND <voorwaarde>. Op deze manier hoef je niet meer het aantal voorwaarden te tellen. Een voorbeeld hiervan is onderstaand Java programma:
[java]
dim sqlstmt as new Stringbuilder
sqlstmt.add(“SELECT * FROM Producten”)
sqlstmt.add(“WHERE 1=1″)
If ProductCategorie <> ” then
sqlstmt.AppendFormat(“AND ProductCategorie = ‘Fietsen'”, trim(ProductCategorie))
end if
If Prijs > 0 then
sqlstmt.AppendFormat(“AND Prijs > 500”, trim(Prijs))
end if
[/java]
In dit programma wordt WHERE 1=1 aan het begin van het programma aan de SQL statement toegevoegd. Vervolgens worden twee voorwaarden met AND gegenereerd in aparte programma regels die vervolgens worden samengevoegd.
Geef een reactie