Was du im Delphi machst, das kann man auch im
SQL machen.
z.B. (das IF als IIF, IFTHEN, CASE oder wie auch immer)
AND IIF(:STRASSE IS NULL, STRASSE IS NULL, STRASSE = :STRASSE)
bzw. da du ja kein NULL, sondern einen Leerstring in der Variable/Parameter hast
AND IIF(:STRASSE = '', STRASSE IS NULL, STRASSE = :STRASSE)
oder sicherheitshalber, falls doch
AND IIF(COALESCE(:STRASSE, '') = '', STRASSE IS NULL, STRASSE = :STRASSE)
AND IIF(NULLIF(:STRASSE, '') IS NULL, STRASSE IS NULL, STRASSE = :STRASSE)
oder
AND ((STRASSE IS NULL AND :STRASSE IS NULL) OR STRASSE = :STRASSE)
AND ((STRASSE IS NULL AND NULLIF(:STRASSE, '') IS NULL) OR STRASSE = :STRASSE) -- wieder das wegen '' oder NULL
oder
AND COALESCE(STRASSE, :STRASSE) = :STRASSE -- bzw. wegen dem '' oder NULL hier im Delphi als Text oder NULL übergeben
AND COALESCE(STRASSE, NULLIF(:STRASSE, '')) IS NOT DISTINCT FROM NULLIF(:STRASSE, '') -- wieder '' oder NULL
AND COALESCE(STRASSE, :STRASSE, '') = COALESCE(:STRASSE, '') -- oder andersrum