SQL-Suche mit logischen Operatoren

9

Ich habe eine asp.net-Webanwendung, die eine Suchseite benötigt, die nach Daten in einer bestimmten Tabelle (SQL) sucht. Heute hat es nur eine einfache LIKE-Abfrage, die parametrisierte sql verwendet:

%Vor%

Jetzt muss ich die Option hinzufügen, logische Operatoren für die Suche zu verwenden.

In der Textbox sucht ein Benutzer beispielsweise nach

%Vor%

Das Hinzufügen von Volltextindizierung zur Tabelle ist keine bevorzugte Option, da ich das Datenmodell nicht kontrolliere.

Ich suche nach einer Methode, die Textabfragen zu interpretieren und in eine SQL-Anweisung mit der entsprechenden Anzahl von SqlParams zu konvertieren.

%Vor%

Würde somelike wie

zurückgeben %Vor%

Und ein sqlParams wie

%Vor%

Nun muss es jemanden geben, der so etwas gemacht hat? Ich habe SO und Google ohne wirklichen Erfolg gesucht. Und Hinweise auf Open-Source / Free-Code oder eine gute Idee, wie der Suchausdruck in SQL konvertiert werden kann, sind willkommen.

    
Paaland 01.12.2011, 09:18
quelle

1 Antwort

2

Das Parsen der Abfrage über und / oder / () usw. muss über einen Parser erfolgen. Für etwas so Einfaches sollte ein Rangierbahnhofsalgorithmus gut funktionieren (und so handhaben wir das und / oder nicht usw., wenn SE auf Tags gefiltert wird, obwohl die vollständige Unterstützung für geklammerte Unterausdrücke nur intern verfügbar ist. Dies erzeugt einen Baum der Operationen, d. H. (Hier unter Verwendung der Präfixdarstellung, aber es wird typischer verwendet, um eine AST zu erzeugen)

%Vor%

, die Sie dann verwenden müssen, um TSQL zu generieren. Nicht trivial, aber auch keine Raketenwissenschaft.

    
Marc Gravell 01.12.2011 09:24
quelle