@@ -11174,11 +11174,29 @@ impl<'a> Parser<'a> {
11174
11174
)
11175
11175
}
11176
11176
expr => {
11177
- if dialect_of ! ( self is MsSqlDialect ) {
11178
- if let Some ( select_item) = self . parse_mssql_alias_with_equal ( & expr) {
11179
- return Ok ( select_item) ;
11177
+ // Parse a [`SelectItem`] based on an [MsSql] syntax that uses the equal sign
11178
+ // to denote an alias, for example: SELECT col_alias = col FROM tbl
11179
+ // [MsSql]: https://learn.microsoft.com/en-us/sql/t-sql/queries/select-examples-transact-sql?view=sql-server-ver16#b-use-select-with-column-headings-and-calculations
11180
+ let expr = if self . dialect . supports_eq_alias_assigment ( ) {
11181
+ if let Expr :: BinaryOp {
11182
+ ref left,
11183
+ op : BinaryOperator :: Eq ,
11184
+ ref right,
11185
+ } = expr
11186
+ {
11187
+ if let Expr :: Identifier ( alias) = left. as_ref ( ) {
11188
+ return Ok ( SelectItem :: ExprWithAlias {
11189
+ expr : * right. clone ( ) ,
11190
+ alias : alias. clone ( ) ,
11191
+ } ) ;
11192
+ }
11180
11193
}
11181
- }
11194
+ expr
11195
+ } else {
11196
+ expr
11197
+ } ;
11198
+
11199
+ // Parse the common AS keyword for aliasing a column
11182
11200
self . parse_optional_alias ( keywords:: RESERVED_FOR_COLUMN_ALIAS )
11183
11201
. map ( |alias| match alias {
11184
11202
Some ( alias) => SelectItem :: ExprWithAlias { expr, alias } ,
@@ -11188,27 +11206,6 @@ impl<'a> Parser<'a> {
11188
11206
}
11189
11207
}
11190
11208
11191
- /// Parse a [`SelectItem`] based on an MsSql syntax that uses the equal sign
11192
- /// to denote an alias, for example: SELECT col_alias = col FROM tbl
11193
- /// <https://learn.microsoft.com/en-us/sql/t-sql/queries/select-examples-transact-sql?view=sql-server-ver16#b-use-select-with-column-headings-and-calculations>
11194
- fn parse_mssql_alias_with_equal ( & mut self , expr : & Expr ) -> Option < SelectItem > {
11195
- if let Expr :: BinaryOp {
11196
- left, op, right, ..
11197
- } = expr
11198
- {
11199
- if op == & BinaryOperator :: Eq {
11200
- if let Expr :: Identifier ( ref alias) = * * left {
11201
- return Some ( SelectItem :: ExprWithAlias {
11202
- expr : * right. clone ( ) ,
11203
- alias : alias. clone ( ) ,
11204
- } ) ;
11205
- }
11206
- }
11207
- }
11208
-
11209
- None
11210
- }
11211
-
11212
11209
/// Parse an [`WildcardAdditionalOptions`] information for wildcard select items.
11213
11210
///
11214
11211
/// If it is not possible to parse it, will return an option.
0 commit comments