mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-10-10 05:52:13 +00:00
Support Snowflake/BigQuery TRIM. (#975)
This commit is contained in:
parent
5263da68cd
commit
83cb734b3c
5 changed files with 95 additions and 0 deletions
|
@ -1315,6 +1315,7 @@ impl<'a> Parser<'a> {
|
|||
/// ```sql
|
||||
/// TRIM ([WHERE] ['text' FROM] 'text')
|
||||
/// TRIM ('text')
|
||||
/// TRIM(<expr>, [, characters]) -- only Snowflake or BigQuery
|
||||
/// ```
|
||||
pub fn parse_trim_expr(&mut self) -> Result<Expr, ParserError> {
|
||||
self.expect_token(&Token::LParen)?;
|
||||
|
@ -1336,6 +1337,18 @@ impl<'a> Parser<'a> {
|
|||
expr: Box::new(expr),
|
||||
trim_where,
|
||||
trim_what: Some(trim_what),
|
||||
trim_characters: None,
|
||||
})
|
||||
} else if self.consume_token(&Token::Comma)
|
||||
&& dialect_of!(self is SnowflakeDialect | BigQueryDialect | GenericDialect)
|
||||
{
|
||||
let characters = self.parse_comma_separated(Parser::parse_expr)?;
|
||||
self.expect_token(&Token::RParen)?;
|
||||
Ok(Expr::Trim {
|
||||
expr: Box::new(expr),
|
||||
trim_where: None,
|
||||
trim_what: None,
|
||||
trim_characters: Some(characters),
|
||||
})
|
||||
} else {
|
||||
self.expect_token(&Token::RParen)?;
|
||||
|
@ -1343,6 +1356,7 @@ impl<'a> Parser<'a> {
|
|||
expr: Box::new(expr),
|
||||
trim_where,
|
||||
trim_what: None,
|
||||
trim_characters: None,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue