Struct sea_orm_migration::prelude::CaseStatement
pub struct CaseStatement { /* private fields */ }Implementations§
§impl CaseStatement
impl CaseStatement
pub fn new() -> CaseStatement
pub fn new() -> CaseStatement
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""#
); pub fn case<C, T>(self, cond: C, then: T) -> CaseStatementwhere
C: IntoCondition,
T: Into<SimpleExpr>,
pub fn case<C, T>(self, cond: C, then: T) -> CaseStatementwhere 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""#
); pub fn finally<E>(self, else: E) -> CaseStatementwhere
E: Into<SimpleExpr>,
pub fn finally<E>(self, else: E) -> CaseStatementwhere 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§
§impl Clone for CaseStatement
impl Clone for CaseStatement
§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 more§impl Debug for CaseStatement
impl Debug for CaseStatement
§impl Default for CaseStatement
impl Default for CaseStatement
§fn default() -> CaseStatement
fn default() -> CaseStatement
Returns the “default value” for a type. Read more
§impl Into<SimpleExpr> for CaseStatement
impl Into<SimpleExpr> for CaseStatement
§fn into(self) -> SimpleExpr
fn into(self) -> SimpleExpr
Converts this type into the (usually inferred) input type.
§impl PartialEq for CaseStatement
impl PartialEq for CaseStatement
§fn eq(&self, other: &CaseStatement) -> bool
fn eq(&self, other: &CaseStatement) -> bool
This method tests for
self and other values to be equal, and is used
by ==.impl StructuralPartialEq for CaseStatement
Auto Trait Implementations§
impl !RefUnwindSafe for CaseStatement
impl Send for CaseStatement
impl Sync for CaseStatement
impl Unpin for CaseStatement
impl !UnwindSafe for CaseStatement
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