pub struct Condition { /* private fields */ }
Expand description
Represents the value of an Condition::any
or Condition::all
: a set of disjunctive or conjunctive conditions.
Implementationsยง
Sourceยงimpl Condition
impl Condition
Sourcepub fn add<C>(self, condition: C) -> Self
pub fn add<C>(self, condition: C) -> Self
Add a condition to the set.
If itโs an Condition::any
, it will be separated from the others by an " OR "
in the query. If itโs
an Condition::all
, it will be separated by an " AND "
.
use sea_query::{tests_cfg::*, *};
let statement = Query::select()
.column(Glyph::Id)
.from(Glyph::Table)
.cond_where(
Cond::all()
.add(Expr::col(Glyph::Aspect).eq(0).into_condition().not())
.add(Expr::col(Glyph::Id).eq(0).into_condition().not()),
)
.to_string(PostgresQueryBuilder);
assert_eq!(
statement,
r#"SELECT "id" FROM "glyph" WHERE (NOT "aspect" = 0) AND (NOT "id" = 0)"#
);
Sourcepub fn add_option<C>(self, other: Option<C>) -> Self
pub fn add_option<C>(self, other: Option<C>) -> Self
Add an optional condition to the set.
Shorthand for if o.is_some() { self.add(o) }
ยงExamples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.column(Glyph::Image)
.from(Glyph::Table)
.cond_where(
Cond::all()
.add_option(Some(Expr::col((Glyph::Table, Glyph::Image)).like("A%")))
.add_option(None::<Expr>),
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `image` FROM `glyph` WHERE `glyph`.`image` LIKE 'A%'"#
);
Sourcepub fn any() -> Condition
pub fn any() -> Condition
Create a condition that is true if any of the conditions is true.
ยงExamples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.column(Glyph::Image)
.from(Glyph::Table)
.cond_where(
Cond::any()
.add(Expr::col((Glyph::Table, Glyph::Aspect)).is_in([3, 4]))
.add(Expr::col((Glyph::Table, Glyph::Image)).like("A%"))
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `image` FROM `glyph` WHERE `glyph`.`aspect` IN (3, 4) OR `glyph`.`image` LIKE 'A%'"#
);
Sourcepub fn all() -> Condition
pub fn all() -> Condition
Create a condition that is false if any of the conditions is false.
ยงExamples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.column(Glyph::Image)
.from(Glyph::Table)
.cond_where(
Cond::all()
.add(Expr::col((Glyph::Table, Glyph::Aspect)).is_in([3, 4]))
.add(Expr::col((Glyph::Table, Glyph::Image)).like("A%"))
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `image` FROM `glyph` WHERE `glyph`.`aspect` IN (3, 4) AND `glyph`.`image` LIKE 'A%'"#
);
Sourcepub fn not(self) -> Self
pub fn not(self) -> Self
Negates a condition.
ยงExamples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.column(Glyph::Image)
.from(Glyph::Table)
.cond_where(
Cond::all()
.not()
.add(Expr::col((Glyph::Table, Glyph::Aspect)).is_in([3, 4]))
.add(Expr::col((Glyph::Table, Glyph::Image)).like("A%"))
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `image` FROM `glyph` WHERE NOT (`glyph`.`aspect` IN (3, 4) AND `glyph`.`image` LIKE 'A%')"#
);
ยงMore Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.column(Glyph::Id)
.cond_where(
Cond::all()
.add(
Cond::all()
.not()
.add(Expr::val(1).eq(1))
.add(Expr::val(2).eq(2)),
)
.add(Cond::any().add(Expr::val(3).eq(3)).add(Expr::val(4).eq(4))),
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `id` WHERE (NOT (1 = 1 AND 2 = 2)) AND (3 = 3 OR 4 = 4)"#
);
Trait Implementationsยง
impl StructuralPartialEq for Condition
Auto Trait Implementationsยง
impl Freeze for Condition
impl RefUnwindSafe for Condition
impl Send for Condition
impl Sync for Condition
impl Unpin for Condition
impl UnwindSafe for Condition
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
Sourceยงimpl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Sourceยงimpl<T> ExprTrait for T
impl<T> ExprTrait for T
Sourceยงfn as_enum<N>(self, type_name: N) -> Exprwhere
N: IntoIden,
fn as_enum<N>(self, type_name: N) -> Exprwhere
N: IntoIden,
Express a
AS enum
expression. Read moreSourceยงfn cast_as<N>(self, type_name: N) -> Exprwhere
N: IntoIden,
fn cast_as<N>(self, type_name: N) -> Exprwhere
N: IntoIden,
Express a
CAST AS
expression. Read moreSourceยงfn equals<C>(self, col: C) -> Exprwhere
C: IntoColumnRef,
fn equals<C>(self, col: C) -> Exprwhere
C: IntoColumnRef,
Express a equal expression between two table columns,
you will mainly use this to relate identical value between two table columns. Read more
Sourceยงfn in_subquery(self, sel: SelectStatement) -> Expr
fn in_subquery(self, sel: SelectStatement) -> Expr
Express a
IN
sub-query expression. Read moreSourceยงfn in_tuples<V, I>(self, v: I) -> Exprwhere
V: IntoValueTuple,
I: IntoIterator<Item = V>,
fn in_tuples<V, I>(self, v: I) -> Exprwhere
V: IntoValueTuple,
I: IntoIterator<Item = V>,
Express a
IN
sub expression. Read moreSourceยงfn is_not_null(self) -> Expr
fn is_not_null(self) -> Expr
Express a
IS NOT NULL
expression. Read moreSourceยงfn left_shift<R>(self, right: R) -> Expr
fn left_shift<R>(self, right: R) -> Expr
Express a bitwise left shift. Read more
Sourceยงfn not_between<A, B>(self, a: A, b: B) -> Expr
fn not_between<A, B>(self, a: A, b: B) -> Expr
Express a
NOT BETWEEN
expression. Read moreSourceยงfn not_equals<C>(self, col: C) -> Exprwhere
C: IntoColumnRef,
fn not_equals<C>(self, col: C) -> Exprwhere
C: IntoColumnRef,
Express a not equal expression between two table columns,
you will mainly use this to relate identical value between two table columns. Read more
Sourceยงfn not_in_subquery(self, sel: SelectStatement) -> Expr
fn not_in_subquery(self, sel: SelectStatement) -> Expr
Express a
NOT IN
sub-query expression. Read moreSourceยงfn not_like<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
fn not_like<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
Express a
NOT LIKE
expression. Read moreSourceยงfn right_shift<R>(self, right: R) -> Expr
fn right_shift<R>(self, right: R) -> Expr
Express a bitwise right shift. Read more
Sourceยงimpl<T> IntoCondition for T
impl<T> IntoCondition for T
fn into_condition(self) -> Condition
Sourceยงimpl<T> PgExpr for Twhere
T: ExprTrait,
impl<T> PgExpr for Twhere
T: ExprTrait,
Sourceยงfn concatenate<T>(self, right: T) -> Expr
fn concatenate<T>(self, right: T) -> Expr
Available on crate feature
backend-postgres
only.Express an postgres concatenate (
||
) expression. Read moreSourceยงfn concat<T>(self, right: T) -> Expr
fn concat<T>(self, right: T) -> Expr
Available on crate feature
backend-postgres
only.Alias of
PgExpr::concatenate
Sourceยงfn matches<T>(self, expr: T) -> Expr
fn matches<T>(self, expr: T) -> Expr
Available on crate feature
backend-postgres
only.Express an postgres fulltext search matches (
@@
) expression. Read moreSourceยงfn contains<T>(self, expr: T) -> Expr
fn contains<T>(self, expr: T) -> Expr
Available on crate feature
backend-postgres
only.Express an postgres fulltext search contains (
@>
) expression. Read moreSourceยงfn contained<T>(self, expr: T) -> Expr
fn contained<T>(self, expr: T) -> Expr
Available on crate feature
backend-postgres
only.Express an postgres fulltext search contained (
<@
) expression. Read moreSourceยงfn ilike<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
fn ilike<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
Available on crate feature
backend-postgres
only.Express a
ILIKE
expression. Read moreSourceยงfn not_ilike<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
fn not_ilike<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
Available on crate feature
backend-postgres
only.Express a
NOT ILIKE
expressionSourceยงfn get_json_field<T>(self, right: T) -> Expr
fn get_json_field<T>(self, right: T) -> Expr
Available on crate feature
backend-postgres
only.Express a postgres retrieves JSON field as JSON value (
->
). Read moreSourceยงimpl<T> SqliteExpr for Twhere
T: ExprTrait,
impl<T> SqliteExpr for Twhere
T: ExprTrait,
Sourceยงfn glob<T>(self, right: T) -> Expr
fn glob<T>(self, right: T) -> Expr
Available on crate feature
backend-sqlite
only.Express an sqlite
GLOB
operator. Read moreSourceยงfn matches<T>(self, right: T) -> Expr
fn matches<T>(self, right: T) -> Expr
Available on crate feature
backend-sqlite
only.Express an sqlite
MATCH
operator. Read moreSourceยงfn get_json_field<T>(self, right: T) -> Expr
fn get_json_field<T>(self, right: T) -> Expr
Available on crate feature
backend-sqlite
only.Express an sqlite retrieves JSON field as JSON value (
->
). Read more