Enum sea_query::expr::SimpleExpr
source ยท pub enum SimpleExpr {
Show 14 variants
Column(ColumnRef),
Tuple(Vec<SimpleExpr>),
Unary(UnOper, Box<SimpleExpr>),
FunctionCall(FunctionCall),
Binary(Box<SimpleExpr>, BinOper, Box<SimpleExpr>),
SubQuery(Option<SubQueryOper>, Box<SubQueryStatement>),
Value(Value),
Values(Vec<Value>),
Custom(String),
CustomWithExpr(String, Vec<SimpleExpr>),
Keyword(Keyword),
AsEnum(DynIden, Box<SimpleExpr>),
Case(Box<CaseStatement>),
Constant(Value),
}
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)
Tuple(Vec<SimpleExpr>)
Unary(UnOper, Box<SimpleExpr>)
FunctionCall(FunctionCall)
Binary(Box<SimpleExpr>, BinOper, Box<SimpleExpr>)
SubQuery(Option<SubQueryOper>, Box<SubQueryStatement>)
Value(Value)
Values(Vec<Value>)
Custom(String)
CustomWithExpr(String, Vec<SimpleExpr>)
Keyword(Keyword)
AsEnum(DynIden, Box<SimpleExpr>)
Case(Box<CaseStatement>)
Constant(Value)
Implementationsยง
sourceยงimpl SimpleExpr
impl SimpleExpr
sourcepub fn not(self) -> SimpleExpr
pub fn not(self) -> SimpleExpr
Negates an expression with NOT
.
ยงExamples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.column(Char::SizeW)
.from(Char::Table)
.and_where(Expr::col(Char::SizeW).eq(1).not())
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `size_w` FROM `character` WHERE NOT `size_w` = 1"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "size_w" FROM "character" WHERE NOT "size_w" = 1"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT "size_w" FROM "character" WHERE NOT "size_w" = 1"#
);
sourcepub fn and(self, right: SimpleExpr) -> Self
pub fn and(self, right: SimpleExpr) -> Self
Express a logical AND
operation.
ยงExamples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.columns([Char::Character, Char::SizeW, Char::SizeH])
.from(Char::Table)
.cond_where(any![
Expr::col(Char::SizeW).eq(1).and(Expr::col(Char::SizeH).eq(2)),
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)"#
);
sourcepub fn or(self, right: SimpleExpr) -> Self
pub fn or(self, right: SimpleExpr) -> Self
Express a logical OR
operation.
ยงExamples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.columns([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)"#
);
sourcepub fn eq<V>(self, v: V) -> SimpleExprwhere
V: Into<SimpleExpr>,
pub fn eq<V>(self, v: V) -> SimpleExprwhere
V: Into<SimpleExpr>,
Express an equal (=
) expression.
ยงExamples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.columns([Char::Character, Char::SizeW, Char::SizeH])
.from(Char::Table)
.and_where(Expr::value("What!").eq("Nothing"))
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `character`, `size_w`, `size_h` FROM `character` WHERE 'What!' = 'Nothing'"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE 'What!' = 'Nothing'"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE 'What!' = 'Nothing'"#
);
sourcepub fn ne<V>(self, v: V) -> SimpleExprwhere
V: Into<SimpleExpr>,
pub fn ne<V>(self, v: V) -> SimpleExprwhere
V: Into<SimpleExpr>,
Express a not equal (<>
) expression.
ยงExamples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.columns([Char::Character, Char::SizeW, Char::SizeH])
.from(Char::Table)
.and_where(Expr::value("Morning").ne("Good"))
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `character`, `size_w`, `size_h` FROM `character` WHERE 'Morning' <> 'Good'"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE 'Morning' <> 'Good'"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE 'Morning' <> 'Good'"#
);
sourcepub fn add<T>(self, right: T) -> Selfwhere
T: Into<SimpleExpr>,
pub fn add<T>(self, right: T) -> Selfwhere
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""#
);
sourcepub fn mul<T>(self, right: T) -> Selfwhere
T: Into<SimpleExpr>,
pub fn mul<T>(self, right: T) -> Selfwhere
T: Into<SimpleExpr>,
Perform multiplication with another SimpleExpr
.
ยงExamples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(
Expr::col(Char::SizeW)
.max()
.mul(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""#
);
sourcepub fn div<T>(self, right: T) -> Selfwhere
T: Into<SimpleExpr>,
pub fn div<T>(self, right: T) -> Selfwhere
T: Into<SimpleExpr>,
Perform division with another SimpleExpr
.
ยงExamples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(
Expr::col(Char::SizeW)
.max()
.div(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""#
);
sourcepub fn sub<T>(self, right: T) -> Selfwhere
T: Into<SimpleExpr>,
pub fn sub<T>(self, right: T) -> Selfwhere
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""#
);
sourcepub fn cast_as<T>(self, type_name: T) -> Selfwhere
T: IntoIden,
pub fn cast_as<T>(self, type_name: T) -> Selfwhere
T: IntoIden,
Express a CAST AS
expression.
ยงExamples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Expr::value("1").cast_as(Alias::new("integer")))
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT CAST('1' AS integer)"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT CAST('1' AS integer)"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT CAST('1' AS integer)"#
);
sourcepub fn binary<O, T>(self, op: O, right: T) -> Self
pub fn binary<O, T>(self, op: O, right: T) -> Self
Create any binary operation
ยงExamples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.columns([Char::Character, Char::SizeW, Char::SizeH])
.from(Char::Table)
.cond_where(all![
Expr::value(10).binary(BinOper::SmallerThan, Expr::col(Char::SizeW)),
Expr::value(20).binary(BinOper::GreaterThan, Expr::col(Char::SizeH))
])
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `character`, `size_w`, `size_h` FROM `character` WHERE 10 < `size_w` AND 20 > `size_h`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE 10 < "size_w" AND 20 > "size_h""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE 10 < "size_w" AND 20 > "size_h""#
);
sourcepub fn like<L: IntoLikeExpr>(self, like: L) -> Self
pub fn like<L: IntoLikeExpr>(self, like: L) -> Self
Express a LIKE
expression.
ยงExamples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.columns([Char::Character, Char::SizeW, Char::SizeH])
.from(Char::Table)
.and_where(Expr::col((Char::Table, Char::FontId)).cast_as(Alias::new("TEXT")).like("a%"))
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `character`, `size_w`, `size_h` FROM `character` WHERE CAST(`character`.`font_id` AS TEXT) LIKE 'a%'"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE CAST("character"."font_id" AS TEXT) LIKE 'a%'"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE CAST("character"."font_id" AS TEXT) LIKE 'a%'"#
);
sourcepub fn not_like<L: IntoLikeExpr>(self, like: L) -> Self
pub fn not_like<L: IntoLikeExpr>(self, like: L) -> Self
Express a NOT LIKE
expression
Trait Implementationsยง
sourceยงimpl Clone for SimpleExpr
impl Clone for SimpleExpr
sourceยงfn clone(&self) -> SimpleExpr
fn clone(&self) -> SimpleExpr
Returns a copy of the value. Read more
1.0.0 ยท sourceยงfn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresourceยงimpl Debug for SimpleExpr
impl Debug for SimpleExpr
sourceยงimpl From<ColumnRef> for SimpleExpr
impl From<ColumnRef> for SimpleExpr
sourceยงimpl From<FunctionCall> for SimpleExpr
impl From<FunctionCall> for SimpleExpr
sourceยงfn from(func: FunctionCall) -> Self
fn from(func: FunctionCall) -> Self
Converts to this type from the input type.
sourceยงimpl From<Keyword> for SimpleExpr
impl From<Keyword> for SimpleExpr
sourceยงimpl From<SimpleExpr> for ConditionExpression
impl From<SimpleExpr> for ConditionExpression
sourceยงfn from(condition: SimpleExpr) -> Self
fn from(condition: SimpleExpr) -> Self
Converts to this type from the input type.
sourceยงimpl<T> From<T> for SimpleExpr
impl<T> From<T> for SimpleExpr
sourceยงimpl Into<SimpleExpr> for CaseStatement
impl Into<SimpleExpr> for CaseStatement
sourceยงfn into(self) -> SimpleExpr
fn into(self) -> SimpleExpr
Converts this type into the (usually inferred) input type.
sourceยงimpl IntoCondition for SimpleExpr
impl IntoCondition for SimpleExpr
fn into_condition(self) -> Condition
sourceยงimpl PartialEq for SimpleExpr
impl PartialEq for SimpleExpr
sourceยงfn eq(&self, other: &SimpleExpr) -> bool
fn eq(&self, other: &SimpleExpr) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.sourceยงimpl PgExpr for SimpleExpr
Available on crate feature backend-postgres
only.
impl PgExpr for SimpleExpr
Available on crate feature
backend-postgres
only.sourceยงfn concatenate<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn concatenate<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express an postgres concatenate (
||
) expression. Read moresourceยงfn concat<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn concat<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Alias of
PgExpr::concatenate
sourceยงfn matches<T>(self, expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn matches<T>(self, expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express an postgres fulltext search matches (
@@
) expression. Read moresourceยงfn contains<T>(self, expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn contains<T>(self, expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express an postgres fulltext search contains (
@>
) expression. Read moresourceยงfn contained<T>(self, expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn contained<T>(self, expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express an postgres fulltext search contained (
<@
) expression. Read moresourceยงfn ilike<L>(self, like: L) -> SimpleExprwhere
L: IntoLikeExpr,
fn ilike<L>(self, like: L) -> SimpleExprwhere
L: IntoLikeExpr,
Express a
ILIKE
expression. Read moresourceยงfn not_ilike<L>(self, like: L) -> SimpleExprwhere
L: IntoLikeExpr,
fn not_ilike<L>(self, like: L) -> SimpleExprwhere
L: IntoLikeExpr,
Express a
NOT ILIKE
expressionsourceยงfn get_json_field<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn get_json_field<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express a postgres retrieves JSON field as JSON value (
->
). Read moresourceยงfn cast_json_field<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn cast_json_field<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express a postgres retrieves JSON field and casts it to an appropriate SQL type (
->>
). Read moresourceยงimpl SqliteExpr for SimpleExpr
Available on crate feature backend-sqlite
only.
impl SqliteExpr for SimpleExpr
Available on crate feature
backend-sqlite
only.sourceยงfn glob<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn glob<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express an sqlite
GLOB
operator. Read moresourceยงfn matches<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn matches<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express an sqlite
MATCH
operator. Read moresourceยงfn get_json_field<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn get_json_field<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express an sqlite retrieves JSON field as JSON value (
->
). Read moresourceยงfn cast_json_field<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
fn cast_json_field<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express an sqlite retrieves JSON field and casts it to an appropriate SQL type (
->>
). Read moreimpl StructuralPartialEq for SimpleExpr
Auto Trait Implementationsยง
impl Freeze for SimpleExpr
impl !RefUnwindSafe for SimpleExpr
impl Send for SimpleExpr
impl Sync for SimpleExpr
impl Unpin for SimpleExpr
impl !UnwindSafe for SimpleExpr
Blanket Implementationsยง
sourceยงimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
sourceยงfn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more