Enum sea_query::expr::SimpleExpr[][src]

pub enum SimpleExpr {
    Column(ColumnRef),
    Unary(UnOperBox<SimpleExpr>),
    FunctionCall(FunctionVec<SimpleExpr>),
    Binary(Box<SimpleExpr>, BinOperBox<SimpleExpr>),
    SubQuery(Box<SelectStatement>),
    Value(Value),
    Values(Vec<Value>),
    Custom(String),
    CustomWithValues(StringVec<Value>),
    Keyword(Keyword),
}

Represents a Simple Expression in SQL.

SimpleExpr is a node in the expression tree and can represent identifiers, function calls, various operators and sub-queries.

Variants

Column(ColumnRef)
FunctionCall(FunctionVec<SimpleExpr>)
SubQuery(Box<SelectStatement>)
Value(Value)
Values(Vec<Value>)
Custom(String)
CustomWithValues(StringVec<Value>)
Keyword(Keyword)

Implementations

impl SimpleExpr[src]

pub fn and(self, right: SimpleExpr) -> Self[src]

Express a logical AND operation.

Examples

use sea_query::{*, tests_cfg::*};
 
let query = Query::select()
    .columns(vec![Char::Character, Char::SizeW, Char::SizeH])
    .from(Char::Table)
    .or_where(Expr::col(Char::SizeW).eq(1).and(Expr::col(Char::SizeH).eq(2)))
    .or_where(Expr::col(Char::SizeW).eq(3).and(Expr::col(Char::SizeH).eq(4)))
    .to_owned();
 
assert_eq!(
    query.to_string(MysqlQueryBuilder),
    r#"SELECT `character`, `size_w`, `size_h` FROM `character` WHERE ((`size_w` = 1) AND (`size_h` = 2)) OR ((`size_w` = 3) AND (`size_h` = 4))"#
);
assert_eq!(
    query.to_string(PostgresQueryBuilder),
    r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE (("size_w" = 1) AND ("size_h" = 2)) OR (("size_w" = 3) AND ("size_h" = 4))"#
);
assert_eq!(
    query.to_string(SqliteQueryBuilder),
    r#"SELECT `character`, `size_w`, `size_h` FROM `character` WHERE ((`size_w` = 1) AND (`size_h` = 2)) OR ((`size_w` = 3) AND (`size_h` = 4))"#
);

pub fn or(self, right: SimpleExpr) -> Self[src]

Express a logical OR operation.

Examples

use sea_query::{*, tests_cfg::*};
 
let query = Query::select()
    .columns(vec![Char::Character, Char::SizeW, Char::SizeH])
    .from(Char::Table)
    .and_where(Expr::col(Char::SizeW).eq(1).or(Expr::col(Char::SizeH).eq(2)))
    .and_where(Expr::col(Char::SizeW).eq(3).or(Expr::col(Char::SizeH).eq(4)))
    .to_owned();
 
assert_eq!(
    query.to_string(MysqlQueryBuilder),
    r#"SELECT `character`, `size_w`, `size_h` FROM `character` WHERE ((`size_w` = 1) OR (`size_h` = 2)) AND ((`size_w` = 3) OR (`size_h` = 4))"#
);
assert_eq!(
    query.to_string(PostgresQueryBuilder),
    r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE (("size_w" = 1) OR ("size_h" = 2)) AND (("size_w" = 3) OR ("size_h" = 4))"#
);
assert_eq!(
    query.to_string(SqliteQueryBuilder),
    r#"SELECT `character`, `size_w`, `size_h` FROM `character` WHERE ((`size_w` = 1) OR (`size_h` = 2)) AND ((`size_w` = 3) OR (`size_h` = 4))"#
);

pub fn equals<T>(self, right: T) -> Self where
    T: Into<SimpleExpr>, 
[src]

Compares with another SimpleExpr for equality.

Examples

use sea_query::{*, tests_cfg::*};
 
let query = Query::select()
    .column(Char::Character)
    .from(Char::Table)
    .and_where(Expr::col(Char::SizeW).mul(2).equals(Expr::col(Char::SizeH).mul(3)))
    .to_owned();
 
assert_eq!(
    query.to_string(MysqlQueryBuilder),
    r#"SELECT `character` FROM `character` WHERE `size_w` * 2 = `size_h` * 3"#
);
assert_eq!(
    query.to_string(PostgresQueryBuilder),
    r#"SELECT "character" FROM "character" WHERE "size_w" * 2 = "size_h" * 3"#
);
assert_eq!(
    query.to_string(SqliteQueryBuilder),
    r#"SELECT `character` FROM `character` WHERE `size_w` * 2 = `size_h` * 3"#
);

pub fn not_equals<T>(self, right: T) -> Self where
    T: Into<SimpleExpr>, 
[src]

Compares with another SimpleExpr for inequality.

Examples

use sea_query::{*, tests_cfg::*};
 
let query = Query::select()
    .column(Char::Character)
    .from(Char::Table)
    .and_where(Expr::col(Char::SizeW).mul(2).not_equals(Expr::col(Char::SizeH)))
    .to_owned();
 
assert_eq!(
    query.to_string(MysqlQueryBuilder),
    r#"SELECT `character` FROM `character` WHERE `size_w` * 2 <> `size_h`"#
);
assert_eq!(
    query.to_string(PostgresQueryBuilder),
    r#"SELECT "character" FROM "character" WHERE "size_w" * 2 <> "size_h""#
);
assert_eq!(
    query.to_string(SqliteQueryBuilder),
    r#"SELECT `character` FROM `character` WHERE `size_w` * 2 <> `size_h`"#
);

pub fn add<T>(self, right: T) -> Self where
    T: Into<SimpleExpr>, 
[src]

Perform addition with another SimpleExpr.

Examples

use sea_query::{*, tests_cfg::*};
 
let query = Query::select()
    .expr(Expr::col(Char::SizeW).max().add(Expr::col(Char::SizeH).max()))
    .from(Char::Table)
    .to_owned();
 
assert_eq!(
    query.to_string(MysqlQueryBuilder),
    r#"SELECT MAX(`size_w`) + MAX(`size_h`) FROM `character`"#
);
assert_eq!(
    query.to_string(PostgresQueryBuilder),
    r#"SELECT MAX("size_w") + MAX("size_h") FROM "character""#
);
assert_eq!(
    query.to_string(SqliteQueryBuilder),
    r#"SELECT MAX(`size_w`) + MAX(`size_h`) FROM `character`"#
);

pub fn sub<T>(self, right: T) -> Self where
    T: Into<SimpleExpr>, 
[src]

Perform subtraction with another SimpleExpr.

Examples

use sea_query::{*, tests_cfg::*};
 
let query = Query::select()
    .expr(Expr::col(Char::SizeW).max().sub(Expr::col(Char::SizeW).min()))
    .from(Char::Table)
    .to_owned();
 
assert_eq!(
    query.to_string(MysqlQueryBuilder),
    r#"SELECT MAX(`size_w`) - MIN(`size_w`) FROM `character`"#
);
assert_eq!(
    query.to_string(PostgresQueryBuilder),
    r#"SELECT MAX("size_w") - MIN("size_w") FROM "character""#
);
assert_eq!(
    query.to_string(SqliteQueryBuilder),
    r#"SELECT MAX(`size_w`) - MIN(`size_w`) FROM `character`"#
);

Trait Implementations

impl Clone for SimpleExpr[src]

impl Debug for SimpleExpr[src]

impl Into<SelectExpr> for SimpleExpr[src]

impl Into<SimpleExpr> for Expr[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,