Enum sea_query::expr::SimpleExpr [−][src]
pub enum SimpleExpr { Column(ColumnRef), Unary(UnOper, Box<SimpleExpr>), FunctionCall(Function, Vec<SimpleExpr>), Binary(Box<SimpleExpr>, BinOper, Box<SimpleExpr>), SubQuery(Box<SelectStatement>), Value(Value), Values(Vec<Value>), Custom(String), CustomWithValues(String, Vec<Value>), Keyword(Keyword), }
Expand description
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)
Unary(UnOper, Box<SimpleExpr>)
FunctionCall(Function, Vec<SimpleExpr>)
Binary(Box<SimpleExpr>, BinOper, Box<SimpleExpr>)
SubQuery(Box<SelectStatement>)
Value(Value)
Custom(String)
Keyword(Keyword)
Implementations
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))"# );
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))"# );
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"# );
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`"# );
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`"# );
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
Performs the conversion.
Performs the conversion.
Convert into SimpleExpr. Will panic if this Expr is missing an operand
Auto Trait Implementations
impl !RefUnwindSafe for SimpleExpr
impl !Send for SimpleExpr
impl !Sync for SimpleExpr
impl Unpin for SimpleExpr
impl !UnwindSafe for SimpleExpr
Blanket Implementations
Mutably borrows from an owned value. Read more
type Output = T
type Output = T
Should always be Self
pub fn vzip(self) -> V