This article shows how to use General SQL Parser to add, remove and modify condition in where clause, this feature enables your .NET(C#, VB.NET) application manipulate expression in where clause dynamically and create your own filter to fetch desired data set from database.
SELECT clientid,
phone
FROM client
WHERE clientid IN ( 1, 2, 3)
After executing this C# code, we can add a new condition “ClientID > 2″ to where clause.
TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.SqlStatements[0]; whereCondition w = new whereCondition(select.WhereClause); w.add(conditionType.and, "ClientID > 2");
Now, the SQL become this, easy and clean:
SELECT clientid,
phone
FROM client
WHERE clientid IN ( 1, 2, 3) AND ClientID > 2
SELECT clientid,
phone
FROM client
WHERE clientid IN ( 1, 2, 3) AND ClientID > 2
After executing this C# code, we can remove condition “ClientID > 2″ from the where clause.
TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.SqlStatements[0];
whereCondition w = new whereCondition(select.WhereClause);
w.remove("ClientID > 2");
Now, the SQL becomes this, easy and clean:
SELECT clientid,
phone
FROM client
WHERE clientid IN ( 1, 2, 3)
SELECT clientid,
phone
FROM client
WHERE clientid IN ( 1, 2, 3) AND ClientID > 2
After executing this C# code, we can replace condition “ClientID > 2″ with “ClientID > 3″ in the where clause.
TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.SqlStatements[0];
whereCondition w = new whereCondition(select.WhereClause);
w.replace("ClientID > 2", "ClientID > 3");
Now, the SQL becomes this, easy and clean:
SELECT clientid,
phone
FROM client
WHERE clientid IN ( 1, 2, 3) AND ClientID > 3
expressions in where clause was organized as a binary tree structure, and can be visited in preorder/inorder/postorder. you can anything you like by iterate this expression binary tree.
Here is another article had a detailed explanation about the expression structure.
Download this demo: C# version, Java version