Struct sea_query::query::CaseStatement
source ยท pub struct CaseStatement { /* private fields */ }
Implementationsยง
sourceยงimpl CaseStatement
impl CaseStatement
sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new case statement expression
Examples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.expr_as(
CaseStatement::new()
.case(Expr::col((Glyph::Table, Glyph::Aspect)).is_in([2, 4]), true)
.finally(false),
Alias::new("is_even")
)
.from(Glyph::Table)
.to_owned();
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT (CASE WHEN ("glyph"."aspect" IN (2, 4)) THEN TRUE ELSE FALSE END) AS "is_even" FROM "glyph""#
);
sourcepub fn case<C, T>(self, cond: C, then: T) -> Selfwhere
C: IntoCondition,
T: Into<SimpleExpr>,
pub fn case<C, T>(self, cond: C, then: T) -> Selfwhere
C: IntoCondition,
T: Into<SimpleExpr>,
Adds new CASE WHEN
to existing case statement.
Examples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.expr_as(
Expr::case(
Expr::col((Glyph::Table, Glyph::Aspect)).gt(0),
"positive"
)
.case(
Expr::col((Glyph::Table, Glyph::Aspect)).lt(0),
"negative"
)
.finally("zero"),
Alias::new("polarity")
)
.from(Glyph::Table)
.to_owned();
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT (CASE WHEN ("glyph"."aspect" > 0) THEN 'positive' WHEN ("glyph"."aspect" < 0) THEN 'negative' ELSE 'zero' END) AS "polarity" FROM "glyph""#
);
sourcepub fn finally<E>(self, else: E) -> Selfwhere
E: Into<SimpleExpr>,
pub fn finally<E>(self, else: E) -> Selfwhere
E: Into<SimpleExpr>,
Ends the case statement with the final ELSE
result.
Examples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.expr_as(
Expr::case(
Cond::any()
.add(Expr::col((Character::Table, Character::FontSize)).gt(48))
.add(Expr::col((Character::Table, Character::SizeW)).gt(500)),
"large"
)
.case(
Cond::any()
.add(Expr::col((Character::Table, Character::FontSize)).between(24,48))
.add(Expr::col((Character::Table, Character::SizeW)).between(300,500)),
"medium"
)
.finally("small"),
Alias::new("char_size"))
.from(Character::Table)
.to_owned();
assert_eq!(
query.to_string(PostgresQueryBuilder),
[
r#"SELECT"#,
r#"(CASE WHEN ("character"."font_size" > 48 OR "character"."size_w" > 500) THEN 'large'"#,
r#"WHEN (("character"."font_size" BETWEEN 24 AND 48) OR ("character"."size_w" BETWEEN 300 AND 500)) THEN 'medium'"#,
r#"ELSE 'small' END) AS "char_size""#,
r#"FROM "character""#
]
.join(" ")
);
Trait Implementationsยง
sourceยงimpl Clone for CaseStatement
impl Clone for CaseStatement
sourceยงfn clone(&self) -> CaseStatement
fn clone(&self) -> CaseStatement
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 CaseStatement
impl Debug for CaseStatement
sourceยงimpl Default for CaseStatement
impl Default for CaseStatement
sourceยงfn default() -> CaseStatement
fn default() -> CaseStatement
Returns the โdefault valueโ for a type. Read more
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.