pub enum SqlExpression {
Show 24 variants
Column(ColumnRef),
StringLiteral(String),
NumberLiteral(String),
BooleanLiteral(bool),
Null,
DateTimeConstructor {
year: i32,
month: u32,
day: u32,
hour: Option<u32>,
minute: Option<u32>,
second: Option<u32>,
},
DateTimeToday {
hour: Option<u32>,
minute: Option<u32>,
second: Option<u32>,
},
MethodCall {
object: String,
method: String,
args: Vec<SqlExpression>,
},
ChainedMethodCall {
base: Box<SqlExpression>,
method: String,
args: Vec<SqlExpression>,
},
FunctionCall {
name: String,
args: Vec<SqlExpression>,
distinct: bool,
},
WindowFunction {
name: String,
args: Vec<SqlExpression>,
window_spec: WindowSpec,
},
BinaryOp {
left: Box<SqlExpression>,
op: String,
right: Box<SqlExpression>,
},
InList {
expr: Box<SqlExpression>,
values: Vec<SqlExpression>,
},
NotInList {
expr: Box<SqlExpression>,
values: Vec<SqlExpression>,
},
Between {
expr: Box<SqlExpression>,
lower: Box<SqlExpression>,
upper: Box<SqlExpression>,
},
Not {
expr: Box<SqlExpression>,
},
CaseExpression {
when_branches: Vec<WhenBranch>,
else_branch: Option<Box<SqlExpression>>,
},
SimpleCaseExpression {
expr: Box<SqlExpression>,
when_branches: Vec<SimpleWhenBranch>,
else_branch: Option<Box<SqlExpression>>,
},
ScalarSubquery {
query: Box<SelectStatement>,
},
InSubquery {
expr: Box<SqlExpression>,
subquery: Box<SelectStatement>,
},
Unnest {
column: Box<SqlExpression>,
delimiter: String,
},
NotInSubquery {
expr: Box<SqlExpression>,
subquery: Box<SelectStatement>,
},
InSubqueryTuple {
exprs: Vec<SqlExpression>,
subquery: Box<SelectStatement>,
},
NotInSubqueryTuple {
exprs: Vec<SqlExpression>,
subquery: Box<SelectStatement>,
},
}Variants§
Column(ColumnRef)
StringLiteral(String)
NumberLiteral(String)
BooleanLiteral(bool)
Null
DateTimeConstructor
DateTimeToday
MethodCall
ChainedMethodCall
FunctionCall
WindowFunction
BinaryOp
InList
NotInList
Between
Not
Fields
expr: Box<SqlExpression>CaseExpression
SimpleCaseExpression
Fields
expr: Box<SqlExpression>when_branches: Vec<SimpleWhenBranch>else_branch: Option<Box<SqlExpression>>ScalarSubquery
Scalar subquery that returns a single value Used in expressions like: WHERE col = (SELECT MAX(id) FROM table)
Fields
query: Box<SelectStatement>InSubquery
IN subquery that returns multiple values Used in expressions like: WHERE col IN (SELECT id FROM table WHERE …)
Unnest
UNNEST - Row expansion function that splits delimited strings Used like: SELECT UNNEST(accounts, ‘|’) AS account FROM fix_trades Causes row multiplication - one input row becomes N output rows
NotInSubquery
NOT IN subquery Used in expressions like: WHERE col NOT IN (SELECT id FROM table WHERE …)
InSubqueryTuple
Tuple IN subquery — matches multiple columns at once Used in expressions like: WHERE (a, b) IN (SELECT x, y FROM table WHERE …) The subquery must return the same number of columns as the LHS tuple.
NotInSubqueryTuple
Tuple NOT IN subquery Used in expressions like: WHERE (a, b) NOT IN (SELECT x, y FROM table WHERE …)
Trait Implementations§
Source§impl Clone for SqlExpression
impl Clone for SqlExpression
Source§fn clone(&self) -> SqlExpression
fn clone(&self) -> SqlExpression
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for SqlExpression
impl RefUnwindSafe for SqlExpression
impl Send for SqlExpression
impl Sync for SqlExpression
impl Unpin for SqlExpression
impl UnsafeUnpin for SqlExpression
impl UnwindSafe for SqlExpression
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<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>
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>
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