Type Alias Cond
pub type Cond = Condition;
Aliased Type§
struct Cond { /* private fields */ }
Implementations
§impl Condition
impl Condition
pub fn add<C>(self, condition: C) -> Conditionwhere
C: Into<ConditionExpression>,
pub fn add<C>(self, condition: C) -> Conditionwhere
C: Into<ConditionExpression>,
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)"#
);
pub fn add_option<C>(self, other: Option<C>) -> Conditionwhere
C: Into<ConditionExpression>,
pub fn add_option<C>(self, other: Option<C>) -> Conditionwhere
C: Into<ConditionExpression>,
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::<SimpleExpr>),
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `image` FROM `glyph` WHERE `glyph`.`image` LIKE 'A%'"#
);
pub 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%'"#
);
pub 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%'"#
);
pub fn not(self) -> Condition
pub fn not(self) -> Condition
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)"#
);