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.
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 T
type Output = T
type Output = T
Should 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 = T
The 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>,