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),
}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
impl SimpleExpr[src]
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]
T: Into<SimpleExpr>,
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]
T: Into<SimpleExpr>,
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]
T: Into<SimpleExpr>,
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]
T: Into<SimpleExpr>,
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 Clone for SimpleExpr[src]fn clone(&self) -> SimpleExpr[src]
pub fn clone_from(&mut self, source: &Self)1.0.0[src]
impl Into<SelectExpr> for SimpleExpr[src]
impl Into<SelectExpr> for SimpleExpr[src]fn into(self) -> SelectExpr[src]
impl Into<SimpleExpr> for Expr[src]
impl Into<SimpleExpr> for Expr[src]fn into(self) -> SimpleExpr[src]
Auto Trait Implementations
impl !RefUnwindSafe for SimpleExpr
impl !RefUnwindSafe for SimpleExprimpl !Send for SimpleExpr
impl !Send for SimpleExprimpl !Sync for SimpleExpr
impl !Sync for SimpleExprimpl Unpin for SimpleExpr
impl Unpin for SimpleExprimpl !UnwindSafe for SimpleExpr
impl !UnwindSafe for SimpleExpr