QueryParser ist eine kleine C#-Klasse, die es ermöglicht, Such-Abfragen in eine entsprechende SQL-WHERE-Bedingung zu zerlegen. Das Original stammt von Claudius Ceteras, ich habe es für meine Zwecke in C# übersetzt und will es euch nicht vorenthalten, da ich es für ganz nützlich halte.
Der Aufruf sollte selbsterklärend sein. Beispiel:
protected void Button1_Click(object sender, EventArgs e)
{
QueryParser qp = new QueryParser();
qp.DefaultOperator = QueryOperator.AND;
Label1.Text = "SELECT * FROM table WHERE " + qp.Parse(TextBox1.Text, new string[] { "firstname", "lastname", "CV" });
}
Das produziert zum Beispiel bei der Abfrage "make peace AND love NOT war" folgendes Ergebnis:
SELECT * FROM table WHERE (firstname LIKE '%make%' OR lastname LIKE '%make%' OR CV LIKE '%make%') AND (firstname LIKE '%peace%' OR lastname LIKE '%peace%' OR CV LIKE '%peace%') AND (firstname LIKE '%love%' OR lastname LIKE '%love%' OR CV LIKE '%love%') NOT (firstname LIKE '%war%' OR lastname LIKE '%war%' OR CV LIKE '%war%')
Viel Spaß damit. Wenn jemand Bugs findet, oder es erweitert, wäre ich für eine Mail oder einen Kommentar hier dankbar.
Download: QueryParser.zip (2,4 KB)