pub struct Func;
Expand description
Function call helper.
Implementations§
Source§impl Func
impl Func
Sourcepub fn cust<T>(func: T) -> Exprwhere
T: IntoIden,
pub fn cust<T>(func: T) -> Exprwhere
T: IntoIden,
Call a custom function.
§Examples
use sea_query::{tests_cfg::*, *};
struct MyFunction;
impl Iden for MyFunction {
fn unquoted(&self, s: &mut dyn FmtWrite) {
write!(s, "MY_FUNCTION").unwrap();
}
}
let query = Query::select()
.expr(Func::cust(MyFunction).args(vec![Expr::val("hello")]))
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT MY_FUNCTION('hello')"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT MY_FUNCTION('hello')"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT MY_FUNCTION('hello')"#
);
Sourcepub fn max<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn max<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Call MAX
function.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::max(Expr::tbl(Char::Table, Char::SizeW)))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT MAX(`character`.`size_w`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT MAX("character"."size_w") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT MAX("character"."size_w") FROM "character""#
);
Sourcepub fn min<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn min<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Call MIN
function.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::min(Expr::tbl(Char::Table, Char::SizeH)))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT MIN(`character`.`size_h`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT MIN("character"."size_h") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT MIN("character"."size_h") FROM "character""#
);
Sourcepub fn sum<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn sum<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Call SUM
function.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::sum(Expr::tbl(Char::Table, Char::SizeH)))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT SUM(`character`.`size_h`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT SUM("character"."size_h") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT SUM("character"."size_h") FROM "character""#
);
Sourcepub fn avg<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn avg<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Call AVG
function.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::avg(Expr::tbl(Char::Table, Char::SizeH)))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT AVG(`character`.`size_h`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT AVG("character"."size_h") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT AVG("character"."size_h") FROM "character""#
);
Sourcepub fn abs<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn abs<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Call ABS
function.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::abs(Expr::tbl(Char::Table, Char::SizeH)))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT ABS(`character`.`size_h`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT ABS("character"."size_h") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT ABS("character"."size_h") FROM "character""#
);
Sourcepub fn count<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn count<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Call COUNT
function.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::count(Expr::tbl(Char::Table, Char::Id)))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT COUNT(`character`.`id`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT COUNT("character"."id") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT COUNT("character"."id") FROM "character""#
);
Sourcepub fn char_length<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn char_length<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Call CHAR_LENGTH
function.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::char_length(Expr::tbl(Char::Table, Char::Character)))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT CHAR_LENGTH(`character`.`character`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT CHAR_LENGTH("character"."character") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT LENGTH("character"."character") FROM "character""#
);
Sourcepub fn if_null<A, B>(a: A, b: B) -> SimpleExpr
pub fn if_null<A, B>(a: A, b: B) -> SimpleExpr
Call IF NULL
function.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::if_null(
Expr::col(Char::SizeW),
Expr::col(Char::SizeH),
))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT IFNULL(`size_w`, `size_h`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT COALESCE("size_w", "size_h") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT IFNULL("size_w", "size_h") FROM "character""#
);
Sourcepub fn cast_as<V, I>(value: V, iden: I) -> SimpleExpr
pub fn cast_as<V, I>(value: V, iden: I) -> SimpleExpr
Call CAST
function with a custom type.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::cast_as("hello", Alias::new("MyType")))
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT CAST('hello' AS MyType)"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT CAST('hello' AS MyType)"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT CAST('hello' AS MyType)"#
);
Sourcepub fn coalesce<I, T>(args: I) -> SimpleExpr
pub fn coalesce<I, T>(args: I) -> SimpleExpr
Call COALESCE
function.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::coalesce([
Expr::col(Char::SizeW),
Expr::col(Char::SizeH),
Expr::val(12),
]))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT COALESCE(`size_w`, `size_h`, 12) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT COALESCE("size_w", "size_h", 12) FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT COALESCE("size_w", "size_h", 12) FROM "character""#
);
Sourcepub fn lower<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn lower<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Call LOWER
function.
§Examples
use sea_query::tests_cfg::Character::Character;
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::lower(Expr::col(Char::Character)))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT LOWER(`character`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT LOWER("character") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT LOWER("character") FROM "character""#
);
Sourcepub fn upper<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
pub fn upper<T>(expr: T) -> SimpleExprwhere
T: Into<SimpleExpr>,
Call UPPER
function.
§Examples
use sea_query::tests_cfg::Character::Character;
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.expr(Func::upper(Expr::col(Char::Character)))
.from(Char::Table)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT UPPER(`character`) FROM `character`"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT UPPER("character") FROM "character""#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT UPPER("character") FROM "character""#
);
Sourcepub fn current_timestamp() -> SimpleExpr
pub fn current_timestamp() -> SimpleExpr
Call CURRENT_TIMESTAMP
function.
§Examples
use sea_query::tests_cfg::Character::Character;
use sea_query::{tests_cfg::*, *};
let query = Query::select().expr(Func::current_timestamp()).to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT CURRENT_TIMESTAMP"#
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT CURRENT_TIMESTAMP"#
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
r#"SELECT CURRENT_TIMESTAMP"#
);
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Func
impl RefUnwindSafe for Func
impl Send for Func
impl Sync for Func
impl Unpin for Func
impl UnwindSafe for Func
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> 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