2009-08-10 19 views
2

Dies ist wahrscheinlich eine Frage, die es seit 20 Jahren gibt, aber ich werde trotzdem fragen. Ich habe einen Bildschirm mit mehreren Suchoptionen. Einige können kombiniert werden. Einige sind exklusiv.Was ist der beste Weg, um mehrere Suchoptionen zu behandeln?

Ex:

Suche nach Vor- und Nachnamen

OR

Suche nach Alter

Was ist der beste Weg, dies zu umgehen? Behandle ich das in der App und rufe entweder 1 von vielen Funktionen oder 1 Funktion mit einer ganzen Reihe von if/else's auf. Eine Reihe von if/else zu machen, scheint einfach so veraltet zu sein. Gibt es keinen effizienteren Weg?

Antwort

2

Ich empfehle, einen Builder zu verwenden, um die verschiedenen Prädikate in ein Objekt zu sammeln, und dann dieses Objekt an eine Funktion/Methode zu übergeben, die die relevante Abfrage generiert.

Die SQLORM Java library verwendet diesen Ansatz, um SQL-Abfragen objektorientiert zu erstellen. This page bietet eine gute Erörterung der Vor- und Nachteile des Erstellens einer Abfragezeichenfolge mithilfe einer Methode mit vielen if-else- und der Builder-Methode.

0

Ich würde die Validierung, welche Felder zusammen am Frontend abgeschlossen werden können.

Für den gespeicherten Prozess ist das Hauptziel, keine SQL mit Concatonions darin zu haben.

In der Sproc tendiere ich dazu, eine Zeichenfolge von Isnull-Anweisungen zu verwenden, um den Parameter oder den Feldwert zu verwenden, wenn der Parameter null ist.

wie Sie sagen, es ist kein neuer Trick, aber es funktioniert und ist viel schneller als die Generierung neuer SQL jeder Ausführung. Es hat auch leicht vorhersehbaren Ausführungsplan.

Verwandte Themen