Enum sea_orm_migration::prelude::expr::SimpleExpr
pub enum SimpleExpr {
Show 14 variants
Column(ColumnRef),
Tuple(Vec<SimpleExpr, Global>),
Unary(UnOper, Box<SimpleExpr, Global>),
FunctionCall(Function, Vec<SimpleExpr, Global>),
Binary(Box<SimpleExpr, Global>, BinOper, Box<SimpleExpr, Global>),
SubQuery(Option<SubQueryOper>, Box<SubQueryStatement, Global>),
Value(Value),
Values(Vec<Value, Global>),
Custom(String),
CustomWithValues(String, Vec<Value, Global>),
Keyword(Keyword),
AsEnum(Arc<dyn Iden + 'static>, Box<SimpleExpr, Global>),
Case(Box<CaseStatement, Global>),
Constant(Value),
}Expand description
Represents a Simple Expression in SQL.
SimpleExpr is a node in the expression tree and can represent identifiers, function calls,
various operators and sub-queries.
Variants§
Column(ColumnRef)
Tuple(Vec<SimpleExpr, Global>)
Unary(UnOper, Box<SimpleExpr, Global>)
FunctionCall(Function, Vec<SimpleExpr, Global>)
Binary(Box<SimpleExpr, Global>, BinOper, Box<SimpleExpr, Global>)
SubQuery(Option<SubQueryOper>, Box<SubQueryStatement, Global>)
Value(Value)
Values(Vec<Value, Global>)
Custom(String)
CustomWithValues(String, Vec<Value, Global>)
Keyword(Keyword)
AsEnum(Arc<dyn Iden + 'static>, Box<SimpleExpr, Global>)
Case(Box<CaseStatement, Global>)
Constant(Value)
Implementations§
§impl SimpleExpr
impl SimpleExpr
pub fn and(self, right: SimpleExpr) -> SimpleExpr
pub fn and(self, right: SimpleExpr) -> SimpleExpr
Express a logical AND operation.
Examples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.columns([Char::Character, Char::SizeW, Char::SizeH])
.from(Char::Table)
.cond_where(any![
Expr::col(Char::SizeW).eq(1).and(Expr::col(Char::SizeH).eq(2)),
Expr::col(Char::SizeW).eq(3).and(Expr::col(Char::SizeH).eq(4)),
])
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `character`, `size_w`, `size_h` FROM `character` WHERE ((`size_w` = 1) AND (`size_h` = 2)) OR ((`size_w` = 3) AND (`size_h` = 4))"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE (("size_w" = 1) AND ("size_h" = 2)) OR (("size_w" = 3) AND ("size_h" = 4))"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE (("size_w" = 1) AND ("size_h" = 2)) OR (("size_w" = 3) AND ("size_h" = 4))"#
);pub fn or(self, right: SimpleExpr) -> SimpleExpr
pub fn or(self, right: SimpleExpr) -> SimpleExpr
Express a logical OR operation.
Examples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.columns([Char::Character, Char::SizeW, Char::SizeH])
.from(Char::Table)
.and_where(Expr::col(Char::SizeW).eq(1).or(Expr::col(Char::SizeH).eq(2)))
.and_where(Expr::col(Char::SizeW).eq(3).or(Expr::col(Char::SizeH).eq(4)))
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `character`, `size_w`, `size_h` FROM `character` WHERE ((`size_w` = 1) OR (`size_h` = 2)) AND ((`size_w` = 3) OR (`size_h` = 4))"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE (("size_w" = 1) OR ("size_h" = 2)) AND (("size_w" = 3) OR ("size_h" = 4))"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT "character", "size_w", "size_h" FROM "character" WHERE (("size_w" = 1) OR ("size_h" = 2)) AND (("size_w" = 3) OR ("size_h" = 4))"#
);pub fn equals<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn equals<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Compares with another SimpleExpr for equality.
Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.column(Char::Character)
.from(Char::Table)
.and_where(
Expr::col(Char::SizeW)
.mul(2)
.equals(Expr::col(Char::SizeH).mul(3)),
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `character` FROM `character` WHERE `size_w` * 2 = `size_h` * 3"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "character" FROM "character" WHERE "size_w" * 2 = "size_h" * 3"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT "character" FROM "character" WHERE "size_w" * 2 = "size_h" * 3"#
);pub fn not_equals<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn not_equals<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Compares with another SimpleExpr for inequality.
Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.column(Char::Character)
.from(Char::Table)
.and_where(
Expr::col(Char::SizeW)
.mul(2)
.not_equals(Expr::col(Char::SizeH)),
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `character` FROM `character` WHERE `size_w` * 2 <> `size_h`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "character" FROM "character" WHERE "size_w" * 2 <> "size_h""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT "character" FROM "character" WHERE "size_w" * 2 <> "size_h""#
);pub fn add<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn add<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Perform addition with another SimpleExpr.
Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(
Expr::col(Char::SizeW)
.max()
.add(Expr::col(Char::SizeH).max()),
)
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT MAX(`size_w`) + MAX(`size_h`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT MAX("size_w") + MAX("size_h") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT MAX("size_w") + MAX("size_h") FROM "character""#
);pub fn sub<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn sub<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Perform subtraction with another SimpleExpr.
Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(
Expr::col(Char::SizeW)
.max()
.sub(Expr::col(Char::SizeW).min()),
)
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT MAX(`size_w`) - MIN(`size_w`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT MAX("size_w") - MIN("size_w") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT MAX("size_w") - MIN("size_w") FROM "character""#
);pub fn concatenate<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn concatenate<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Express an postgres concatenate (||) expression.
Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.columns([Font::Name, Font::Variant, Font::Language])
.from(Font::Table)
.and_where(
Expr::val("a")
.concatenate(Expr::val("b"))
.concat(Expr::val("c"))
.concat(Expr::val("d")),
)
.to_owned();
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "name", "variant", "language" FROM "font" WHERE 'a' || 'b' || 'c' || 'd'"#
);pub fn concat<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn concat<T>(self, right: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Alias of SimpleExpr::concatenate
pub fn cast_as<T>(self, type_name: T) -> SimpleExprwhere
T: IntoIden,
pub fn cast_as<T>(self, type_name: T) -> SimpleExprwhere
T: IntoIden,
Express a CAST AS expression.
Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Expr::value("1").cast_as(Alias::new("integer")))
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT CAST('1' AS integer)"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT CAST('1' AS integer)"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT CAST('1' AS integer)"#
);Trait Implementations§
§impl Clone for SimpleExpr
impl Clone for SimpleExpr
§fn clone(&self) -> SimpleExpr
fn clone(&self) -> SimpleExpr
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 SimpleExpr
impl Debug for SimpleExpr
§impl From<Expr> for SimpleExpr
impl From<Expr> for SimpleExpr
§fn from(src: Expr) -> SimpleExpr
fn from(src: Expr) -> SimpleExpr
Convert into SimpleExpr. Will panic if this Expr is missing an operand
§impl From<SimpleExpr> for ConditionExpression
impl From<SimpleExpr> for ConditionExpression
§fn from(condition: SimpleExpr) -> ConditionExpression
fn from(condition: SimpleExpr) -> ConditionExpression
Converts to this type from the input type.
§impl<T> From<T> for SimpleExprwhere
T: Into<Value>,
impl<T> From<T> for SimpleExprwhere
T: Into<Value>,
§fn from(v: T) -> SimpleExpr
fn from(v: T) -> SimpleExpr
Converts to this type from the input type.
§impl Into<SelectExpr> for SimpleExpr
impl Into<SelectExpr> for SimpleExpr
§fn into(self) -> SelectExpr
fn into(self) -> SelectExpr
Converts this type into the (usually inferred) input type.
§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 IntoCondition for SimpleExpr
impl IntoCondition for SimpleExpr
fn into_condition(self) -> Condition
source§impl IntoSimpleExpr for SimpleExpr
impl IntoSimpleExpr for SimpleExpr
source§fn into_simple_expr(self) -> SimpleExpr
fn into_simple_expr(self) -> SimpleExpr
Method to perform the conversion