pub struct SQLExpr<'a, V: SQLParam, T: DataType, N: Nullability = NonNull, A: AggregateKind = Scalar> { /* private fields */ }Expand description
A SQL expression that carries type information.
This wrapper preserves the SQL type through operations, enabling compile-time type checking of SQL expressions.
§Type Parameters
'a: Lifetime of borrowed dataV: The dialect’s value type (SQLiteValue,PostgresValue)T: The SQL data type marker (Int, Text, etc.)N: The nullability marker (NonNullor Null)A: The aggregation marker (Scalar or Agg)
§Example
use drizzle_core::expr::{SQLExpr, NonNull, Scalar};
use drizzle_core::types::Int;
let expr: SQLExpr<'_, SQLiteValue, Int, NonNull, Scalar> = ...;Implementations§
Source§impl<'a, V: SQLParam, T: DataType, N: Nullability, A: AggregateKind> SQLExpr<'a, V, T, N, A>
impl<'a, V: SQLParam, T: DataType, N: Nullability, A: AggregateKind> SQLExpr<'a, V, T, N, A>
Source§impl<'a, V, T, N> SQLExpr<'a, V, T, N, Agg>
impl<'a, V, T, N> SQLExpr<'a, V, T, N, Agg>
Sourcepub fn over(self, spec: WindowSpec<'a, V>) -> SQLExpr<'a, V, T, N, Scalar>
pub fn over(self, spec: WindowSpec<'a, V>) -> SQLExpr<'a, V, T, N, Scalar>
Apply a window specification to this aggregate expression.
Converts the expression from Agg to Scalar, generating
<expr> OVER (...).
§Example
sum(orders.amount).over(
window()
.partition_by([orders.customer_id])
.order_by([asc(orders.date)])
)Methods from Deref<Target = SQL<'a, V>>§
Sourcepub fn is_subquery(&self) -> bool
pub fn is_subquery(&self) -> bool
Check if this SQL fragment is a subquery (starts with SELECT/WITH).
Sourcepub fn sql(&self) -> String
pub fn sql(&self) -> String
Returns the SQL string with dialect-appropriate placeholders.
Uses $1, $2, ... for PostgreSQL, :name or ? for SQLite, ? for MySQL.
Sourcepub fn build(&self) -> (String, SmallVec<[&V; 8]>)
pub fn build(&self) -> (String, SmallVec<[&V; 8]>)
Generates the SQL string and collects parameter references in a single pass.
This is the preferred method for driver execution paths since it avoids
iterating the chunk list twice (once for sql(), once for params()).
Sourcepub fn build_with(&self, style: ParamStyle) -> (String, SmallVec<[&V; 8]>)
pub fn build_with(&self, style: ParamStyle) -> (String, SmallVec<[&V; 8]>)
Same as build but lets the caller override the
placeholder style. Drivers that speak the dialect but bind parameters
differently (e.g. AWS Data API on Postgres) use this to emit
:1, :2, ... instead of $1, $2, ... without any post-hoc rewriting.
Sourcepub fn write_to(&self, buf: &mut impl Write)
pub fn write_to(&self, buf: &mut impl Write)
Write SQL to a buffer with dialect-appropriate placeholders.
Uses $1, $2, ... for PostgreSQL, ? or :name for SQLite, ? for MySQL.
Sourcepub fn write_to_with(&self, buf: &mut impl Write, style: ParamStyle)
pub fn write_to_with(&self, buf: &mut impl Write, style: ParamStyle)
Same as write_to but with a caller-chosen
placeholder style.
Sourcepub fn write_chunk_to(
&self,
buf: &mut impl Write,
chunk: &SQLChunk<'a, V>,
index: usize,
)
pub fn write_chunk_to( &self, buf: &mut impl Write, chunk: &SQLChunk<'a, V>, index: usize, )
Write a single chunk with pattern detection
Trait Implementations§
Source§impl<'a, V, T, N, A, Rhs> Add<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: ArithmeticOutput<Rhs::SQLType>,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: Numeric,
Rhs::Nullable: Nullability,
impl<'a, V, T, N, A, Rhs> Add<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: ArithmeticOutput<Rhs::SQLType>,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: Numeric,
Rhs::Nullable: Nullability,
Source§impl<'a, V, T, N, A> AsRef<SQL<'a, V>> for SQLExpr<'a, V, T, N, A>
Provides reference conversion to inner SQL.
impl<'a, V, T, N, A> AsRef<SQL<'a, V>> for SQLExpr<'a, V, T, N, A>
Provides reference conversion to inner SQL.
§Example
fn takes_sql_ref<'a, V>(sql: &SQL<'a, V>) { ... }
let expr = eq(users.id, 42);
takes_sql_ref(expr.as_ref());Source§impl<'a, V, T, N, A, Rhs> BitAnd<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: BooleanLike,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: BooleanLike,
Rhs::Nullable: Nullability,
Implements expr1 & expr2 for boolean expressions (SQL AND).
impl<'a, V, T, N, A, Rhs> BitAnd<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: BooleanLike,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: BooleanLike,
Rhs::Nullable: Nullability,
Implements expr1 & expr2 for boolean expressions (SQL AND).
§Example
let condition = eq(users.active, true) & gt(users.age, 18);
// ("users"."active" = TRUE AND "users"."age" > 18)Source§impl<'a, V, T, N, A, Rhs> BitOr<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: BooleanLike,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: BooleanLike,
Rhs::Nullable: Nullability,
Implements expr1 | expr2 for boolean expressions (SQL OR).
impl<'a, V, T, N, A, Rhs> BitOr<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: BooleanLike,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: BooleanLike,
Rhs::Nullable: Nullability,
Implements expr1 | expr2 for boolean expressions (SQL OR).
§Example
let condition = eq(users.role, "admin") | eq(users.role, "moderator");
// ("users"."role" = 'admin' OR "users"."role" = 'moderator')Source§impl<'a, V: Clone + SQLParam, T: Clone + DataType, N: Clone + Nullability, A: Clone + AggregateKind> Clone for SQLExpr<'a, V, T, N, A>
impl<'a, V: Clone + SQLParam, T: Clone + DataType, N: Clone + Nullability, A: Clone + AggregateKind> Clone for SQLExpr<'a, V, T, N, A>
Source§impl<'a, V: Debug + SQLParam, T: Debug + DataType, N: Debug + Nullability, A: Debug + AggregateKind> Debug for SQLExpr<'a, V, T, N, A>
impl<'a, V: Debug + SQLParam, T: Debug + DataType, N: Debug + Nullability, A: Debug + AggregateKind> Debug for SQLExpr<'a, V, T, N, A>
Source§impl<'a, V, T, N, A> Deref for SQLExpr<'a, V, T, N, A>
Provides transparent access to inner SQL methods via Deref coercion.
impl<'a, V, T, N, A> Deref for SQLExpr<'a, V, T, N, A>
Provides transparent access to inner SQL methods via Deref coercion.
§Example
let expr = eq(users.id, 42);
// Access SQL methods directly:
let sql_str = expr.to_string();Source§impl<V, T, N, A> Display for SQLExpr<'_, V, T, N, A>
Display the SQL expression as a string.
impl<V, T, N, A> Display for SQLExpr<'_, V, T, N, A>
Display the SQL expression as a string.
Delegates to the inner SQL type’s Display implementation.
§Example
let expr = eq(users.id, 42);
println!("{}", expr); // "users"."id" = 42Source§impl<'a, V, T, N, A, Rhs> Div<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: ArithmeticOutput<Rhs::SQLType>,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: Numeric,
Rhs::Nullable: Nullability,
impl<'a, V, T, N, A, Rhs> Div<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: ArithmeticOutput<Rhs::SQLType>,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: Numeric,
Rhs::Nullable: Nullability,
Source§impl<'a, V: SQLParam, T: DataType, N: Nullability, A: AggregateKind> Expr<'a, V> for SQLExpr<'a, V, T, N, A>
impl<'a, V: SQLParam, T: DataType, N: Nullability, A: AggregateKind> Expr<'a, V> for SQLExpr<'a, V, T, N, A>
Source§fn to_expr_sql(&self) -> SQL<'a, V>
fn to_expr_sql(&self) -> SQL<'a, V>
Source§fn into_expr_sql(self) -> SQL<'a, V>where
Self: Sized,
fn into_expr_sql(self) -> SQL<'a, V>where
Self: Sized,
Source§impl<V: SQLParam, T, N, A> ExprValueType for SQLExpr<'_, V, T, N, A>where
T: DataType + SQLTypeToRust<V::DialectMarker>,
N: Nullability + WrapNullable<<T as SQLTypeToRust<V::DialectMarker>>::RustType>,
A: AggregateKind,
impl<V: SQLParam, T, N, A> ExprValueType for SQLExpr<'_, V, T, N, A>where
T: DataType + SQLTypeToRust<V::DialectMarker>,
N: Nullability + WrapNullable<<T as SQLTypeToRust<V::DialectMarker>>::RustType>,
A: AggregateKind,
type ValueType = <N as WrapNullable<<T as SQLTypeToRust<<V as SQLParam>::DialectMarker>>::RustType>>::Output
Source§impl<'a, V: SQLParam, T: DataType, N: Nullability, A: AggregateKind> From<SQLExpr<'a, V, T, N, A>> for SQL<'a, V>
impl<'a, V: SQLParam, T: DataType, N: Nullability, A: AggregateKind> From<SQLExpr<'a, V, T, N, A>> for SQL<'a, V>
Source§impl<V: SQLParam, T, N, A> GroupByIdentity for SQLExpr<'_, V, T, N, A>
impl<V: SQLParam, T, N, A> GroupByIdentity for SQLExpr<'_, V, T, N, A>
Source§impl<V, T, N, A> HasAggStatus for SQLExpr<'_, V, T, N, A>
impl<V, T, N, A> HasAggStatus for SQLExpr<'_, V, T, N, A>
type Status = <A as AggToStatus>::Status
Source§impl<V: SQLParam, T, N, A> IntoSelectTarget for SQLExpr<'_, V, T, N, A>
select(typed_expr) → SelectCols<(Expr,)> — single typed expression.
impl<V: SQLParam, T, N, A> IntoSelectTarget for SQLExpr<'_, V, T, N, A>
select(typed_expr) → SelectCols<(Expr,)> — single typed expression.
type Marker = SelectCols<(SQLExpr<'_, V, T, N, A>,)>
Source§impl<'a, V, T, N, A, Rhs> Mul<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: ArithmeticOutput<Rhs::SQLType>,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: Numeric,
Rhs::Nullable: Nullability,
impl<'a, V, T, N, A, Rhs> Mul<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: ArithmeticOutput<Rhs::SQLType>,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: Numeric,
Rhs::Nullable: Nullability,
Source§impl<'a, V, T, N, A> Not for SQLExpr<'a, V, T, N, A>
Implements !expr for boolean expressions (SQL NOT).
impl<'a, V, T, N, A> Not for SQLExpr<'a, V, T, N, A>
Implements !expr for boolean expressions (SQL NOT).
§Example
let condition = eq(users.active, true);
let negated = !condition; // NOT "users"."active" = TRUESource§impl<'a, V, T, N, A, Rhs> Rem<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: ArithmeticOutput<Rhs::SQLType>,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: Numeric,
Rhs::Nullable: Nullability,
impl<'a, V, T, N, A, Rhs> Rem<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: ArithmeticOutput<Rhs::SQLType>,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: Numeric,
Rhs::Nullable: Nullability,
Source§impl<'a, V, T, N, A, Rhs> Sub<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: ArithmeticOutput<Rhs::SQLType>,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: Numeric,
Rhs::Nullable: Nullability,
impl<'a, V, T, N, A, Rhs> Sub<Rhs> for SQLExpr<'a, V, T, N, A>where
V: SQLParam + 'a,
T: ArithmeticOutput<Rhs::SQLType>,
N: Nullability + NullOr<Rhs::Nullable>,
A: AggOr<Rhs::Aggregate>,
Rhs: Expr<'a, V>,
Rhs::SQLType: Numeric,
Rhs::Nullable: Nullability,
Source§impl<'a, V: SQLParam, T: DataType, N: Nullability, A: AggregateKind> ToSQL<'a, V> for SQLExpr<'a, V, T, N, A>
impl<'a, V: SQLParam, T: DataType, N: Nullability, A: AggregateKind> ToSQL<'a, V> for SQLExpr<'a, V, T, N, A>
Auto Trait Implementations§
impl<'a, V, T, N, A> Freeze for SQLExpr<'a, V, T, N, A>where
V: Freeze,
impl<'a, V, T, N, A> RefUnwindSafe for SQLExpr<'a, V, T, N, A>
impl<'a, V, T, N, A> Send for SQLExpr<'a, V, T, N, A>
impl<'a, V, T, N, A> Sync for SQLExpr<'a, V, T, N, A>
impl<'a, V, T, N, A> Unpin for SQLExpr<'a, V, T, N, A>
impl<'a, V, T, N, A> UnsafeUnpin for SQLExpr<'a, V, T, N, A>where
V: UnsafeUnpin,
impl<'a, V, T, N, A> UnwindSafe for SQLExpr<'a, V, T, N, A>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<'a, V, L, R> ComparisonOperand<'a, V, L> for R
impl<'a, V, L, R> ComparisonOperand<'a, V, L> for R
Source§impl<'a, V, E> ExprExt<'a, V> for E
impl<'a, V, E> ExprExt<'a, V> for E
Source§fn eq<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn eq<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
=). Read moreSource§fn ne<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn ne<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
<>). Read moreSource§fn gt<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn gt<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
>). Read moreSource§fn ge<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn ge<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
>=). Read moreSource§fn lt<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn lt<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
<). Read moreSource§fn le<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn le<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
<=). Read moreSource§fn like<R>(
self,
pattern: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType> + Textual,
<R as ComparisonOperand<'a, V, Self>>::SQLType: Textual,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn like<R>(
self,
pattern: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType> + Textual,
<R as ComparisonOperand<'a, V, Self>>::SQLType: Textual,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
Source§fn not_like<R>(
self,
pattern: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType> + Textual,
<R as ComparisonOperand<'a, V, Self>>::SQLType: Textual,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn not_like<R>(
self,
pattern: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType> + Textual,
<R as ComparisonOperand<'a, V, Self>>::SQLType: Textual,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
Source§fn is_null(
self,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
fn is_null( self, ) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
Source§fn is_not_null(
self,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
fn is_not_null( self, ) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
Source§fn between<L, H>(
self,
low: L,
high: H,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <<Self::Aggregate as AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output as AggOr<<H as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
L: ComparisonOperand<'a, V, Self>,
H: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<L as ComparisonOperand<'a, V, Self>>::SQLType> + Compatible<<H as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>,
<Self::Aggregate as AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output: AggOr<<H as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn between<L, H>(
self,
low: L,
high: H,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <<Self::Aggregate as AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output as AggOr<<H as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
L: ComparisonOperand<'a, V, Self>,
H: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<L as ComparisonOperand<'a, V, Self>>::SQLType> + Compatible<<H as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>,
<Self::Aggregate as AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output: AggOr<<H as ComparisonOperand<'a, V, Self>>::Aggregate>,
Source§fn not_between<L, H>(
self,
low: L,
high: H,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <<Self::Aggregate as AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output as AggOr<<H as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
L: ComparisonOperand<'a, V, Self>,
H: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<L as ComparisonOperand<'a, V, Self>>::SQLType> + Compatible<<H as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>,
<Self::Aggregate as AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output: AggOr<<H as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn not_between<L, H>(
self,
low: L,
high: H,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <<Self::Aggregate as AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output as AggOr<<H as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
L: ComparisonOperand<'a, V, Self>,
H: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<L as ComparisonOperand<'a, V, Self>>::SQLType> + Compatible<<H as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>,
<Self::Aggregate as AggOr<<L as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output: AggOr<<H as ComparisonOperand<'a, V, Self>>::Aggregate>,
Source§fn in_array<I, R>(
self,
values: I,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
fn in_array<I, R>( self, values: I, ) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
Source§fn not_in_array<I, R>(
self,
values: I,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
fn not_in_array<I, R>( self, values: I, ) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
Source§fn in_subquery<S>(
self,
subquery: S,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
fn in_subquery<S>( self, subquery: S, ) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
Source§fn not_in_subquery<S>(
self,
subquery: S,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
fn not_in_subquery<S>( self, subquery: S, ) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
Source§fn is_distinct_from<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn is_distinct_from<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
Source§fn is_not_distinct_from<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
fn is_not_distinct_from<R>(
self,
other: R,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, <Self::Aggregate as AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>>::Output>where
R: ComparisonOperand<'a, V, Self>,
Self::SQLType: Compatible<<R as ComparisonOperand<'a, V, Self>>::SQLType>,
Self::Aggregate: AggOr<<R as ComparisonOperand<'a, V, Self>>::Aggregate>,
Source§fn is_true(
self,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
fn is_true( self, ) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
Source§fn is_false(
self,
) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
fn is_false( self, ) -> SQLExpr<'a, V, <V::DialectMarker as DialectTypes>::Bool, NonNull, Self::Aggregate>
impl<Mk> MarkerAggValidFor<()> for Mk
impl<Scope> ScopeSatisfies<Nil, ()> for Scope
impl<E, Grouped> SingleColGroupCheck<Grouped, AggSkip> for Ewhere
E: HasAggStatus<Status = AllAgg>,
impl<E, Grouped, W> SingleColGroupCheck<Grouped, ScalarCheck<W>> for Ewhere
E: HasAggStatus<Status = AllScalar> + GroupByIdentity,
Grouped: ScopeContains<<E as GroupByIdentity>::Identity, W>,
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read more