sqlglot.optimizer.normalize_identifiers
1from sqlglot import exp 2from sqlglot._typing import E 3from sqlglot.dialects.dialect import RESOLVES_IDENTIFIERS_AS_UPPERCASE, DialectType 4 5 6def normalize_identifiers(expression: E, dialect: DialectType = None) -> E: 7 """ 8 Normalize all unquoted identifiers to either lower or upper case, depending on 9 the dialect. This essentially makes those identifiers case-insensitive. 10 11 Example: 12 >>> import sqlglot 13 >>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar') 14 >>> normalize_identifiers(expression).sql() 15 'SELECT bar.a AS a FROM "Foo".bar' 16 17 Args: 18 expression: The expression to transform. 19 dialect: The dialect to use in order to decide how to normalize identifiers. 20 21 Returns: 22 The transformed expression. 23 """ 24 return expression.transform(_normalize, dialect, copy=False) 25 26 27def _normalize(node: exp.Expression, dialect: DialectType = None) -> exp.Expression: 28 if isinstance(node, exp.Identifier) and not node.quoted: 29 node.set( 30 "this", 31 node.this.upper() 32 if dialect in RESOLVES_IDENTIFIERS_AS_UPPERCASE 33 else node.this.lower(), 34 ) 35 36 return node
def
normalize_identifiers( expression: ~E, dialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None) -> ~E:
7def normalize_identifiers(expression: E, dialect: DialectType = None) -> E: 8 """ 9 Normalize all unquoted identifiers to either lower or upper case, depending on 10 the dialect. This essentially makes those identifiers case-insensitive. 11 12 Example: 13 >>> import sqlglot 14 >>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar') 15 >>> normalize_identifiers(expression).sql() 16 'SELECT bar.a AS a FROM "Foo".bar' 17 18 Args: 19 expression: The expression to transform. 20 dialect: The dialect to use in order to decide how to normalize identifiers. 21 22 Returns: 23 The transformed expression. 24 """ 25 return expression.transform(_normalize, dialect, copy=False)
Normalize all unquoted identifiers to either lower or upper case, depending on the dialect. This essentially makes those identifiers case-insensitive.
Example:
>>> import sqlglot >>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar') >>> normalize_identifiers(expression).sql() 'SELECT bar.a AS a FROM "Foo".bar'
Arguments:
- expression: The expression to transform.
- dialect: The dialect to use in order to decide how to normalize identifiers.
Returns:
The transformed expression.