pub struct CaseStatement { /* private fields */ }Implementations§
Source§impl CaseStatement
 
impl CaseStatement
Sourcepub 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),
         "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) -> CaseStatement
 
pub fn case<C, T>(self, cond: C, then: T) -> CaseStatement
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"),
         "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) -> 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"),
        "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 duplicate 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.
Source§impl PartialEq for CaseStatement
 
impl PartialEq for CaseStatement
impl StructuralPartialEq for CaseStatement
Auto Trait Implementations§
impl Freeze for CaseStatement
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
Source§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
Source§impl<T> ExprTrait for Twhere
    T: Into<SimpleExpr>,
 
impl<T> ExprTrait for Twhere
    T: Into<SimpleExpr>,
Source§fn as_enum<N>(self, type_name: N) -> SimpleExprwhere
    N: IntoIden,
 
fn as_enum<N>(self, type_name: N) -> SimpleExprwhere
    N: IntoIden,
Express a 
AS enum expression. Read moreSource§fn binary<O, R>(self, op: O, right: R) -> SimpleExpr
 
fn binary<O, R>(self, op: O, right: R) -> SimpleExpr
Create any binary operation Read more
Source§fn cast_as<N>(self, type_name: N) -> SimpleExprwhere
    N: IntoIden,
 
fn cast_as<N>(self, type_name: N) -> SimpleExprwhere
    N: IntoIden,
Express a 
CAST AS expression. Read moreSource§fn unary(self, op: UnOper) -> SimpleExpr
 
fn unary(self, op: UnOper) -> SimpleExpr
Apply any unary operator to the expression. Read more
Source§fn add<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn add<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express an arithmetic addition operation. Read more
fn and<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Source§fn between<A, B>(self, a: A, b: B) -> SimpleExpr
 
fn between<A, B>(self, a: A, b: B) -> SimpleExpr
Express a 
BETWEEN expression. Read moreSource§fn div<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn div<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express an arithmetic division operation. Read more
Source§fn eq<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn eq<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express an equal (
=) expression. Read moreSource§fn equals<C>(self, col: C) -> SimpleExprwhere
    C: IntoColumnRef,
 
fn equals<C>(self, col: C) -> SimpleExprwhere
    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 gt<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn gt<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a greater than (
>) expression. Read moreSource§fn gte<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn gte<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a greater than or equal (
>=) expression. Read moreSource§fn in_subquery(self, sel: SelectStatement) -> SimpleExpr
 
fn in_subquery(self, sel: SelectStatement) -> SimpleExpr
Express a 
IN sub-query expression. Read moreSource§fn in_tuples<V, I>(self, v: I) -> SimpleExprwhere
    V: IntoValueTuple,
    I: IntoIterator<Item = V>,
 
fn in_tuples<V, I>(self, v: I) -> SimpleExprwhere
    V: IntoValueTuple,
    I: IntoIterator<Item = V>,
Express a 
IN sub expression. Read moreSource§fn is<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn is<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a 
IS expression. Read moreSource§fn is_in<V, I>(self, v: I) -> SimpleExpr
 
fn is_in<V, I>(self, v: I) -> SimpleExpr
Express a 
IN expression. Read moreSource§fn is_not<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn is_not<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a 
IS NOT expression. Read moreSource§fn is_not_in<V, I>(self, v: I) -> SimpleExpr
 
fn is_not_in<V, I>(self, v: I) -> SimpleExpr
Express a 
NOT IN expression. Read moreSource§fn is_not_null(self) -> SimpleExpr
 
fn is_not_null(self) -> SimpleExpr
Express a 
IS NOT NULL expression. Read moreSource§fn is_null(self) -> SimpleExpr
 
fn is_null(self) -> SimpleExpr
Express a 
IS NULL expression. Read moreSource§fn left_shift<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn left_shift<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a bitwise left shift. Read more
Source§fn like<L>(self, like: L) -> SimpleExprwhere
    L: IntoLikeExpr,
 
fn like<L>(self, like: L) -> SimpleExprwhere
    L: IntoLikeExpr,
Express a 
LIKE expression. Read moreSource§fn lt<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn lt<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a less than (
<) expression. Read moreSource§fn lte<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn lte<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a less than or equal (
<=) expression. Read moreSource§fn modulo<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn modulo<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express an arithmetic modulo operation. Read more
Source§fn mul<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn mul<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express an arithmetic multiplication operation. Read more
Source§fn ne<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn ne<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a not equal (
<>) expression. Read moreSource§fn not(self) -> SimpleExpr
 
fn not(self) -> SimpleExpr
Negates an expression with 
NOT. Read moreSource§fn not_between<A, B>(self, a: A, b: B) -> SimpleExpr
 
fn not_between<A, B>(self, a: A, b: B) -> SimpleExpr
Express a 
NOT BETWEEN expression. Read moreSource§fn not_equals<C>(self, col: C) -> SimpleExprwhere
    C: IntoColumnRef,
 
fn not_equals<C>(self, col: C) -> SimpleExprwhere
    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) -> SimpleExpr
 
fn not_in_subquery(self, sel: SelectStatement) -> SimpleExpr
Express a 
NOT IN sub-query expression. Read moreSource§fn not_like<L>(self, like: L) -> SimpleExprwhere
    L: IntoLikeExpr,
 
fn not_like<L>(self, like: L) -> SimpleExprwhere
    L: IntoLikeExpr,
Express a 
NOT LIKE expression. Read moreSource§fn or<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn or<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a logical 
OR operation. Read moreSource§fn right_shift<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn right_shift<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a bitwise right shift. Read more
Source§fn sub<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn sub<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express an arithmetic subtraction operation. Read more
Source§fn bit_and<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn bit_and<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a bitwise AND operation. Read more
Source§fn bit_or<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
 
fn bit_or<R>(self, right: R) -> SimpleExprwhere
    R: Into<SimpleExpr>,
Express a bitwise OR operation. Read more
Source§impl<T> Instrument for T
 
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
 
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
 
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts 
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
 
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts 
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more