sqlglot.optimizer.normalize_identifiers
1from __future__ import annotations 2 3import typing as t 4 5from sqlglot import exp 6from sqlglot._typing import E 7from sqlglot.dialects.dialect import Dialect, DialectType 8 9 10@t.overload 11def normalize_identifiers(expression: E, dialect: DialectType = None) -> E: 12 ... 13 14 15@t.overload 16def normalize_identifiers(expression: str, dialect: DialectType = None) -> exp.Expression: 17 ... 18 19 20def normalize_identifiers(expression, dialect=None): 21 """ 22 Normalize all unquoted identifiers to either lower or upper case, depending 23 on the dialect. This essentially makes those identifiers case-insensitive. 24 25 Note: 26 Some dialects (e.g. BigQuery) treat identifiers as case-insensitive even 27 when they're quoted, so in these cases all identifiers are normalized. 28 29 Example: 30 >>> import sqlglot 31 >>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar') 32 >>> normalize_identifiers(expression).sql() 33 'SELECT bar.a AS a FROM "Foo".bar' 34 >>> normalize_identifiers("foo", dialect="snowflake").sql(dialect="snowflake") 35 'FOO' 36 37 Args: 38 expression: The expression to transform. 39 dialect: The dialect to use in order to decide how to normalize identifiers. 40 41 Returns: 42 The transformed expression. 43 """ 44 if isinstance(expression, str): 45 expression = exp.to_identifier(expression) 46 return expression.transform(Dialect.get_or_raise(dialect).normalize_identifier, copy=False)
def
normalize_identifiers(expression, dialect=None):
21def normalize_identifiers(expression, dialect=None): 22 """ 23 Normalize all unquoted identifiers to either lower or upper case, depending 24 on the dialect. This essentially makes those identifiers case-insensitive. 25 26 Note: 27 Some dialects (e.g. BigQuery) treat identifiers as case-insensitive even 28 when they're quoted, so in these cases all identifiers are normalized. 29 30 Example: 31 >>> import sqlglot 32 >>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar') 33 >>> normalize_identifiers(expression).sql() 34 'SELECT bar.a AS a FROM "Foo".bar' 35 >>> normalize_identifiers("foo", dialect="snowflake").sql(dialect="snowflake") 36 'FOO' 37 38 Args: 39 expression: The expression to transform. 40 dialect: The dialect to use in order to decide how to normalize identifiers. 41 42 Returns: 43 The transformed expression. 44 """ 45 if isinstance(expression, str): 46 expression = exp.to_identifier(expression) 47 return expression.transform(Dialect.get_or_raise(dialect).normalize_identifier, copy=False)
Normalize all unquoted identifiers to either lower or upper case, depending on the dialect. This essentially makes those identifiers case-insensitive.
Note:
Some dialects (e.g. BigQuery) treat identifiers as case-insensitive even when they're quoted, so in these cases all identifiers are normalized.
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' >>> normalize_identifiers("foo", dialect="snowflake").sql(dialect="snowflake") 'FOO'
Arguments:
- expression: The expression to transform.
- dialect: The dialect to use in order to decide how to normalize identifiers.
Returns:
The transformed expression.