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
impl SimpleExpr[src]
impl SimpleExpr[src]pub fn and(self, right: SimpleExpr) -> Self[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]
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]
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]
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]
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]
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 Clone for SimpleExpr[src]fn clone(&self) -> SimpleExpr[src]
fn clone(&self) -> SimpleExpr[src]Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0[src]
fn clone_from(&mut self, source: &Self)1.0.0[src]Performs copy-assignment from source. Read more
impl Debug for SimpleExpr[src]
impl Debug for SimpleExpr[src]impl From<SimpleExpr> for ConditionExpression[src]
impl From<SimpleExpr> for ConditionExpression[src]fn from(condition: SimpleExpr) -> Self[src]
fn from(condition: SimpleExpr) -> Self[src]Performs the conversion.
impl Into<SelectExpr> for SimpleExpr[src]
impl Into<SelectExpr> for SimpleExpr[src]fn into(self) -> SelectExpr[src]
fn into(self) -> SelectExpr[src]Performs the conversion.
impl Into<SimpleExpr> for Expr[src]
impl Into<SimpleExpr> for Expr[src]fn into(self) -> SimpleExpr[src]
fn into(self) -> SimpleExpr[src]Performs the conversion.
impl IntoCondition for SimpleExpr[src]
impl IntoCondition for SimpleExpr[src]fn into_condition(self) -> Condition[src]
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
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> Same<T> for T
impl<T> Same<T> for Ttype Output = T
type Output = TShould always be Self
impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn to_owned(&self) -> T[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)[src]
pub fn clone_into(&self, target: &mut T)[src]🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,