Operators

Comparison operators

IOperator op1 = sql.Eq(person["Id"], 1);
IOperator op2 = sql.Eq(() => person.Id, 1);

// SqlExtensions
IOperator op3 = person["Id"].Eq(1);
IOperator op4 = sql.Col(() => person.Id).Eq(1);

// Lambda expression
IOperator op5 = sql.Op(() => person.Id == 1);

Logical operators

IOperator op1 = sql.And
    .Add(sql.Eq(person["Active"], true))
    .Add(sql.Ge(person["Salary"], 2000));

// Lambda overload
IOperator op2 = sql.Or
    .Add(() => person.Active)
    .Add(() => person.Salary >= 2000);

// Lambda expression
IOperator op3 = sql.Op(() => person.Active && person.Salary >= 2000);

Arithmetic operators

IOperator op1 = sql.Add
    .Add(person["Salary"])
    .Add(200);

// Lambda overload
IOperator op2 = sql.Add
    .Add(() => person.Salary)
    .Add(200);

// Lambda expression
// Because is not a boolean result must call "Val" instead of "Op"
IOperator op3 = sql.Val(() => person.Salary + 200);

Bitwise operators

IOperator op1 = sql.BitAnd
    .Add(2)
    .Add(3);

// Lambda overload
IOperator op2 = sql.Add
    .Add(() => 2)
    .Add(3);

// Lambda expression
// Because is not a boolean result must call "Val" instead of "Op"
IOperator op3 = sql.Val(() => 2 & 3);

Set operators

IOperator op = sql.Union(
    sql.Query.Select(() => person.Name).From(() => person),
    sql.Query.Select(() => dept.Name).From(() => dept));

List of operators

The following list shows the implemented operators:

SQL ISqlBuilder Extensions1 Expressions SqlExp
= Eq Eq == Eq
<> NotEq NotEq != NotEq
LIKE Like Like Like2 Like
NOT LIKE NotLike NotLike NotLike2 NotLike
< Lt Lt < Lt
<= Le Le <= Le
> Gt Gt > Gt
>= Ge Ge >= Ge
IN In In In3 In
NOT IN NotIn NotIn NotIn3 NotIn
NOT Not Not ! Not
IS NULL IsNull
Eq(null)
IsNull
Eq(null)
== null IsNull
Eq(null)
IS NOT NULL IsNotNull
NotEq(null)
IsNotNull
NotEq(null)
!= null IsNotNull
NotEq(null)
BETWEEN Between Between Between
NOT BETWEEN NotBetween NotBetween NotBetween
AND And &&
&
OR Or ||
|
+ Add Plus +
- Subtract Minus -
* Multiply Multiply *
/ Divide Divide /
% Modulo Modulo %
+ (Positive) +
- (Negative) Negate Negate -
& BitAnd BitAnd &
| BitOr BitOr |
^ BitXor BitXor ^
~ BitNot BitNot ~
<< LeftShift LeftShift <<
>> RightShift RightShift >>
ALL All All
ANY Any Any
EXISTS Exists Exists
SOME Some Some
UNION Union
UNION ALL UnionAll
EXCEPT Except
EXCEPT ALL ExceptAll
INTERSECT Intersect
INTERSECT ALL IntersectAll
CASE ?:
COALESCE() ??
CONCAT() +

Like pattern

You can use the following methods to apply a like pattern:

Pattern ISqlBuilder Extensions4
Value% ToLikeStart ToLikeStart
%Value ToLikeEnd ToLikeEnd
%Value% ToLikeAny ToLikeAny
IAlias person = sql.Alias("person");
IOperator op = person["Name"].Like(sql.ToLikeAny("SomeName"));

// Extension method
IOperator op = person["Name"].Like("SomeName".ToLikeAny());

Register operators

In your engine

You can register your operators in your engine to translate them with a different name or into a function.


  1. extension methods for IQueryFragment

  2. extension method for String

  3. extension method for IEnumerable

  4. extension methods for String