SnowConvert AI – Teradata – Sitzungsmodi in Teradata¶
Beschreibung der Teradata-Sitzungsmodi¶
Die Teradata-Datenbank verfügt über verschiedene Modi für die Ausführung von Abfragen: ANSI Modus (Regeln basierend auf den ANSI SQL: 2011 Spezifikationen) und TERA Modus (von Teradata definierte Regeln). Bitte lesen Sie die folgende Teradata-Dokumentation für weitere Informationen.
Teradata-Modus für informative Tabellen mit Zeichenfolgen¶
Bei Zeichenfolgen funktioniert der Teradata-Modus anders. Wie in der folgenden Tabelle, die auf der Teradata-Dokumentation basiert, erläutert wird:
Feature |
ANSI-Modus |
Teradata-Modus |
|---|---|---|
Standardattribut für Zeichenvergleiche |
CASESPECIFIC |
NOT-CASESPECIFIC |
TRIM-Standardverhalten |
TRIM(BOTH FROM) |
TRIM(BOTH FROM) |
Zusammenfassung der Übersetzungsspezifikation¶
| Mode | Column constraint values | Teradata behavior | SC expected behavior |
|---|---|---|---|
| ANSI Mode | CASESPECIFIC | CASESPECIFIC | No constraint added. |
| NOT CASESPECIFIC | CASESPECIFIC | Add COLLATE 'en-cs' in column definition. | |
| Teradata Mode | CASESPECIFIC | CASESPECIFIC | In most cases, do not add COLLATE, and convert its usages of string comparison to RTRIM( expression ) |
| NOT CASESPECIFIC | NOT CASESPECIFIC | In most cases, do not add COLLATE, and convert its usages of string comparison to RTRIM(UPPER( expression )) |
Verfügbare Optionen für Übersetzungsspezifikationen¶
ANSI Modus für den Vergleich von Zeichenfolgen - COLLATE¶
Dieser Abschnitt definiert die Übersetzungsspezifikation für eine Zeichenfolge im ANSI-Modus unter Verwendung von COLLATE.
Beschreibung ¶
ANSI-Modus für den Vergleich von Zeichenfolgen und die Verwendung von COLLATE¶
Der Vergleich von Zeichenfolgen im Modus ANSI wendet die Einschränkung COLLATE wie erforderlich auf die Spalten oder Anweisungen an. Die Standardeinstellung für die Groß-/Kleinschreibung für die TRIM-Funktion ist zu berücksichtigt.
Beachten Sie, dass in Teradata die Standardeinstellung für die Groß-/Kleinschreibung „CASESPECIFIC“ lautet, was der Standardeinstellung in Snowflake „case-sensitive“ entspricht. Daher werden diese Fälle nicht mit COLLATE übersetzt, da dies redundant wäre.
Beispielhafte Quellcode-Muster ¶
Datenkonfiguration¶
Teradata¶
Snowflake¶
Vergleichsoperation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
Fall 3: CAST NOT CASESPECIFIC-Spalte zu CASESPECIFIC und Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Snowflake¶
Bemerkung
COLLATE ‚en-cs‘ ist für die funktionale Gleichwertigkeit erforderlich.
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Fall 4: CAST CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
|
7 |
GEORGE |
salEs |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
|
7 |
GEORGE |
salEs |
Fall 5: CAST NOT CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Snowflake¶
Bemerkung
COLLATE ist erforderlich.
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
LIKE-Operation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
2 |
John |
SNOW |
Engineering |
3 |
WIlle |
SNOW |
Human resources |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
2 |
John |
SNOW |
Engineering |
3 |
WIlle |
SNOW |
Human resources |
Fall 3: CAST NOT CASESPECIFIC-Spalte zu CASESPECIFIC und Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
5 |
Maria |
SaleS |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
5 |
Maria |
SaleS |
Fall 4: CAST CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
2 |
John |
SNOW |
Engineering |
3 |
WIlle |
SNOW |
Human resources |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
2 |
John |
SNOW |
Engineering |
3 |
WIlle |
SNOW |
Human resources |
IN-Operation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Snowflake¶
Bemerkung
Dieser Fall erfordert COLLATE(_ column_name_ , 'en-cs-rtrim')
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Bemerkung
In diesem Fall hat die Spalte keine Spalteneinschränkung, aber die Standardbeschränkung im Teradata ANSI-Modus ist CASESPECIFIC.
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
4 |
Marco |
SnoW |
EngineerinG |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
4 |
Marco |
SnoW |
EngineerinG |
ORDER BY-Klausel.¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
first_name |
|---|
GeorgE |
GEORGE |
GEORGE |
George |
John |
JOHN |
JOHN |
Marco |
Maria |
WIlle |
Snowflake¶
Warnung
Bitte überprüfen Sie FDM.Pending to add. _
Abfrage¶
Ausgabe¶
first_name |
|---|
GeorgE |
George |
GEORGE |
GEORGE |
John |
JOHN |
JOHN |
Marco |
Maria |
WIlle |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
department |
|---|
EngineerinG |
Engineering |
Finanzen |
Human resources |
IT |
SalEs |
SaleS |
Sales |
salEs |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
department |
|---|
EngineerinG |
Engineering |
Finanzen |
Human resources |
IT |
SalEs |
SaleS |
Sales |
salEs |
sales |
GROUP BY-Klausel.¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
first_name |
|---|
Maria |
GeorgE |
WIlle |
JOHN |
Marco |
GEORGE |
Snowflake¶
Warnung
Groß-/Kleinschreibung oder die Reihenfolge kann in der Ausgabe abweichen.
Bemerkung
RTRIM ist in ausgewählten Spalten erforderlich.
Abfrage¶
Ausgabe¶
first_name |
|---|
John |
Marco |
George |
GeorgE |
WIlle |
Maria |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
last_name |
|---|
SnoW |
SNOW |
SnoW |
Snow |
snow |
Snowflake¶
Bemerkung
Die Reihenfolge kann abweichen.
Abfrage¶
Ausgabe¶
first_name |
|---|
Snow |
SNOW |
SnoW |
SnoW |
snow |
HAVING-Klausel.¶
Die HAVING-Klausel verwendet die Muster in:
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Beispiel: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
Snowflake¶
Abfrage¶
Ausgabe¶
CASEWHEN-Anweisung¶
Die Anweisung CASE WHEN verwendet die Muster, beschrieben in der
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Teradata¶
Abfrage¶
Ausgabe¶
first_name |
last_name |
department_full_name |
|---|---|---|
GEORGE |
Andere |
|
Maria |
Andere |
|
GeorgE |
GLOBAL-SALES |
|
GEORGE |
Andere |
Snowflake¶
Abfrage¶
Ausgabe¶
first_name |
last_name |
department_full_name |
|---|---|---|
Maria |
Andere |
|
GEORGE |
Andere |
|
GEORGE |
Andere |
|
GeorgE |
GLOBAL-SALES |
JOIN-Klausel.¶
Warnung
Einfache Szenarien mit Auswertungsoperationen werden unterstützt.
Die Anweisung JOIN verwendet die
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Beispiel: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department_name |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
10 |
JOHN |
snow |
Finanzen |
Snowflake¶
Bemerkung
d.department_name ist NOT CASESPECIFIC und erfordert daher COLLATE.
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department_name |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
10 |
JOHN |
snow |
Finanzen |
ANSI Modus für den Vergleich von Zeichenfolgen - NO COLLATE¶
Dieser Abschnitt definiert die Übersetzungsspezifikation für eine Zeichenfolge im ANSI-Modus ohne Verwendung von COLLATE.
Beschreibung ¶
ANSI mode for string comparison and NO COLLATE usages.¶
Der Vergleich von Zeichenfolgen im Modus ANSI ohne die Verwendung von COLLATE wendet RTRIM und UPPER nach Bedarf an. Die Standardeinstellung für die Groß-/Kleinschreibung für die TRIM-Funktion ist zu berücksichtigt, d. h. wenn eine Spalte im Teradata ANSI-Modus keine Einstellung für die Groß-/Kleinschreibung hat, wird Teradata als Standard CASESPECIFIC verwenden.
Beispielhafte Quellcode-Muster ¶
Datenkonfiguration¶
Teradata¶
Snowflake¶
Vergleichsoperation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
Fall 3: CAST NOT CASESPECIFIC-Spalte zu CASESPECIFIC und Datenbankmodus ist ANSI-Modus¶
Warnung
Die (CASESPECIFIC) überschreiben die Spalteneinschränkung in der Tabellendefinition.
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
6 |
GEORGE |
sales |
Fall 4: CAST CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
4 |
Marco |
SnoW |
EngineerinG |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
4 |
Marco |
SnoW |
EngineerinG |
LIKE-Operation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Fall 3: CAST NOT CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Fall 4: CAST CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
2 |
John |
SNOW |
Engineering |
3 |
WIlle |
SNOW |
Human resources |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
2 |
John |
SNOW |
Engineering |
3 |
WIlle |
SNOW |
Human resources |
IN-Operation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
6 |
GEORGE |
sales |
|
7 |
GEORGE |
salEs |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
6 |
GEORGE |
sales |
|
7 |
GEORGE |
salEs |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
5 |
Maria |
SaleS |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
5 |
Maria |
SaleS |
ORDER BY-Klausel.¶
Bemerkung
Beachten Sie, dass diese Funktionsäquivalenz unterschiedlich sein kann.
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
department |
|---|
EngineerinG |
Engineering |
Finanzen |
Human resources |
IT |
SalEs |
SaleS |
Sales |
salEs |
sales |
Snowflake¶
Bemerkung
Bitte beachten Sie FDM. Die Reihenfolge unterscheidet sich in der Reihenfolge, in der die Daten eingefügt werden.
Abfrage¶
Ausgabe¶
department |
|---|
EngineerinG |
Engineering |
Finanzen |
Human resources |
IT |
SalEs |
SaleS |
Sales |
salEs |
sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
department |
|---|
Finanzen |
Human Resources |
Information Technology |
Sales |
Snowflake¶
Abfrage¶
Ausgabe¶
department |
|---|
Finanzen |
Human Resources |
Information Technology |
Sales |
GROUP BY-Klausel.¶
Warnung
Um eine Funktionsäquivalenz zu gewährleisten, ist es erforderlich, den Ausdruck COLLATE zu verwenden.
Weitere Informationen dazu finden Sie unter SSC-EWI-TD0007.
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
first_name |
|---|
Maria |
GeorgE |
WIlle |
John |
Marco |
GEORGE |
Snowflake¶
Abfrage¶
Ausgabe¶
FIRST_NAME |
|---|
Georg |
John |
WIlle |
Marco |
Maria |
GEORGE |
GEORGE |
GeorgE |
JOHN |
JOHN |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
last_name |
|---|
SnoW |
SNOW |
SnoW |
Snow |
snow |
Snowflake¶
Abfrage¶
Ausgabe¶
last_name |
|---|
SnoW |
SNOW |
SnoW |
Snow |
snow |
HAVING-Klausel.¶
Die HAVING-Klausel verwendet die Muster in:
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Beispiel: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
Snowflake¶
Abfrage¶
Ausgabe¶
CASEWHEN-Anweisung¶
Die Anweisung CASE WHEN verwendet die Muster, beschrieben in der
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Teradata¶
Abfrage¶
Ausgabe¶
| first_name | last_name | department_full_name |
|---|---|---|
| GEORGE | Department Full Name | |
| Mary | GLOBAL SALES | |
| GeorgE | Other | |
| GEORGE | Department Full Name |
Snowflake¶
Abfrage¶
Ausgabe¶
| first_name | last_name | department_full_name |
|---|---|---|
| GEORGE | Department Full Name | |
| Mary | GLOBAL SALES | |
| GeorgE | Other | |
| GEORGE | Department Full Name |
JOIN-Klausel.¶
Warnung
Einfache Szenarien werden unterstützt.
Die Anweisung JOIN verwendet die
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Beispiel: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist ANSI-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department_name |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
10 |
JOHN |
snow |
Finanzen |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department_name |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
10 |
JOHN |
snow |
Finanzen |
Zugehörige EWIs¶
SSC-EWI-TD0007: GROUP BY IS NOT EQUIVALENT IN TERADATA MODE
TERA Modus für den Vergleich von Zeichenfolgen - COLLATE¶
Dieser Abschnitt definiert die Übersetzungsspezifikation für eine Zeichenfolge im Tera-Modus unter Verwendung von COLLATE.
Beschreibung ¶
Tera-Modus für den Vergleich von Zeichenfolgen und die Verwendung von COLLATE¶
Der Vergleich von Zeichenfolgen im Tera-Modus wendet die Einschränkung COLLATE wie erforderlich auf die Spalten oder Anweisungen an. Die Standardeinstellung für die Groß-/Kleinschreibung für die TRIM-Funktion ist zu berücksichtigt. Die Standardeinstellung für Groß-/Kleinschreibung in Teradata für den Modus TERA ist NOT CASESPECIFIC. Die Spalten ohne Einstellung für die Groß-/Kleinschreibung haben also COLLATE('en-ci')-Beschränkungen.
Beispielhafte Quellcode-Muster ¶
Datenkonfiguration¶
Teradata¶
Snowflake¶
Vergleichsoperation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
Fall 3: CAST NOT CASESPECIFIC-Spalte zu CASESPECIFIC und Datenbankmodus ist TERA-Modus¶
Bemerkung
Beachten Sie, dass die folgenden Abfragen
SELECT * FROM employees WHERE first_name = 'JOHN ' (CASESPECIFIC)SELECT * FROM employees WHERE first_name (CASESPECIFIC) = 'JOHN '
die gleichen Werte zurückgeben.
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
9 |
JOHN |
SnoW |
IT |
10 |
JOHN |
snow |
Finanzen |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
9 |
JOHN |
SnoW |
IT |
10 |
JOHN |
snow |
Finanzen |
Fall 4: CAST CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist TERA-Modus¶
Bemerkung
CAST zu einer Spalte auf der linken Seite des Vergleichs hat Priorität.
\ Zum Beispiel:
SELECT * FROM employees WHERE last_name (NOT CASESPECIFIC) = 'snoW';_gibt 5 Zeilen zurück. _SELECT * FROM employees WHERE last_name = 'snoW' (NOT CASESPECIFIC);_gibt 0 Zeilen mit dieser Datenkonfiguration zurück.
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
2 |
John |
SNOW |
Engineering |
3 |
WIlle |
SNOW |
Human resources |
4 |
Marco |
SnoW |
EngineerinG |
10 |
JOHN |
snow |
Finanzen |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
2 |
John |
SNOW |
Engineering |
3 |
WIlle |
SNOW |
Human resources |
4 |
Marco |
SnoW |
EngineerinG |
10 |
JOHN |
snow |
Finanzen |
LIKE-Operation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Fall 3: CAST NOT CASESPECIFIC-Spalte zu CASESPECIFIC und Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
Fall 4: CAST CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
IN-Operation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Fall 2: Die Spalteneinschränkung ist nicht definiert und der Datenbankmodus ist TERA-Modus¶
Bemerkung
Im Tera-Modus bedeutet eine nicht definierte Einstellung für die Groß-/Kleinschreibung NOT CASESPECIFIC.
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
5 |
Maria |
SaleS |
|
6 |
GEORGE |
sales |
|
7 |
GEORGE |
salEs |
|
8 |
GeorgE |
SalEs |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
5 |
Maria |
SaleS |
|
6 |
GEORGE |
sales |
|
7 |
GEORGE |
salEs |
|
8 |
GeorgE |
SalEs |
Fall 3: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
ORDER BY-Klausel.¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
| employee_id | first_name |
|---|---|
| 1 | George |
| 2 | John |
| 3 | WIlle |
| 4 | Marco |
| 5 | Mary |
| 6 | GEORGE |
| 7 | GEORGE |
| 8 | GeorgE |
| 9 | JOHN |
| 10 | JOHN |
Snowflake¶
Abfrage¶
Ausgabe¶
| employee_id | first_name |
|---|---|
| 1 | George |
| 2 | John |
| 3 | WIlle |
| 4 | Marco |
| 5 | Mary |
| 6 | GEORGE |
| 7 | GEORGE |
| 8 | GeorgE |
| 9 | JOHN |
| 10 | JOHN |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
| employee_id | last_name |
|---|---|
| 1 | Snow |
| 2 | SNOW |
| 3 | SNOW |
| 4 | SnoW |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | SnoW |
| 10 | snow |
Snowflake¶
Abfrage¶
Ausgabe¶
| employee_id | last_name |
|---|---|
| 1 | Snow |
| 2 | SNOW |
| 3 | SNOW |
| 4 | SnoW |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | SnoW |
| 10 | snow |
GROUP BY-Klausel.¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
first_name |
|---|
Maria |
GeorgE |
WIlle |
JOHN |
Marco |
GEORGE |
Snowflake¶
Warnung
Die Einstellung für die Groß-/Kleinschreibung in der Ausgabe kann je nach Anzahl der ausgewählten Spalten variieren.
Abfrage¶
Ausgabe¶
first_name |
|---|
John |
Marco |
George |
GeorgE |
WIlle |
Maria |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
last_name |
|---|
SnoW |
SNOW |
SnoW |
Snow |
snow |
Snowflake¶
Abfrage¶
Ausgabe¶
last_name |
|---|
SnoW |
SNOW |
SnoW |
Snow |
snow |
HAVING-Klausel.¶
Die HAVING-Klausel verwendet die Muster in:
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Beispiel: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Bemerkung
Die Einstellung für die Groß-/Kleinschreibung in der Ausgabe kann je nach Anzahl der ausgewählten Spalten variieren. Dies hängt auch mit der GROUP BY-Klausel zusammen.
Abfrage¶
Ausgabe¶
| employee_id | first_name |
|---|---|
| 7 | GEORGE |
| 1 | George |
| 6 | GEORGE |
Snowflake¶
Abfrage¶
Ausgabe¶
| employee_id | first_name |
|---|---|
| 7 | GEORGE |
| 1 | George |
| 6 | GEORGE |
CASEWHEN-Anweisung¶
Die Anweisung CASE WHEN verwendet die Muster, beschrieben in der
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Teradata¶
Abfrage¶
Ausgabe¶
first_name |
last_name |
department_full_name |
|---|---|---|
GEORGE |
GLOBAL-SALES |
|
Maria |
Andere |
|
GeorgE |
Andere |
|
GEORGE |
GLOBAL-SALES |
Snowflake¶
Abfrage¶
Ausgabe¶
first_name |
last_name |
department_full_name |
|---|---|---|
GEORGE |
GLOBAL-SALES |
|
Maria |
Andere |
|
GeorgE |
Andere |
|
GEORGE |
GLOBAL-SALES |
JOIN-Klausel.¶
Warnung
Einfache Szenarien mit Auswertungsoperationen werden unterstützt.
Die Anweisung JOIN verwendet die
Evaluation of comparison operations.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Beispiel: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department_name |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
3 |
WIlle |
SNOW |
Human Resources |
5 |
Maria |
Sales |
|
6 |
GEORGE |
Sales |
|
7 |
GEORGE |
Sales |
|
8 |
GeorgE |
Sales |
|
10 |
JOHN |
snow |
Finanzen |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department_name |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
3 |
WIlle |
SNOW |
Human Resources |
5 |
Maria |
Sales |
|
6 |
GEORGE |
Sales |
|
7 |
GEORGE |
Sales |
|
8 |
GeorgE |
Sales |
|
10 |
JOHN |
snow |
Finanzen |
Zugehörige EWIs¶
[SSC-EWI-TD0007](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/teradataFDM. md#ssc-fdm-td0007): GROUP BY REQUIRED COLLATE FOR CASE INSENSITIVE COLUMNS
[SC-FDM-TD0032](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/teradataFDM. md#ssc-fdm-td0032) : [NOT] CASESPECIFIC CLAUSE WAS REMOVED
TERA Modus für den Vergleich von Zeichenfolgen - NO COLLATE¶
Dieser Abschnitt definiert die Übersetzungsspezifikation für eine Zeichenfolge im Tera-Modus ohne Verwendung von COLLATE.
Beschreibung ¶
Tera-Modus für den Vergleich von Zeichenfolgen und die Verwendung von NOCOLLATE¶
Der Vergleich von Zeichenfolgen im Tera-Modus ohne die Verwendung von COLLATE wendet RTRIM und UPPER nach Bedarf an. Die Standardeinstellung für die Groß-/Kleinschreibung für die TRIM-Funktion ist zu berücksichtigt.
Beispielhafte Quellcode-Muster ¶
Datenkonfiguration¶
Teradata¶
Snowflake¶
Vergleichsoperation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Dieses Beispiel zeigt die Verwendung einer Spalte, die als NOT CASESPECIFIC eingerichtet ist, da es sich um eine first_name Spalte handelt. Auch bei der Abfrage der Zeichenfolge 'GEorge', werden bei der Ausführung der Abfrage Ergebnisse in Teradata abgerufen, da die Einstellung für Groß-/Kleinschreibung nicht berücksichtigt wird.
Um dieses Szenario in Snowflake nachzubilden, sind zwei Funktionen implementiert: RTRIM(UPPER(string_evaluation)), UPPER ist in diesem Szenario erforderlich, da die Zeichenfolge die Einstellung für Groß-/Kleinschreibung nicht überprüft.
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
In diesem Beispiel ist die Spalteneinschränkung CASESPECIFIC, für die das Beispiel keine Zeilen in Teradata abruft, weil Snow nicht gleich SNOW ist.
In Snowflake weist die daraus resultierende Migration nur auf die Verwendung der Funktion RTRIM hin, da die Einstellung für Groß-/Kleinschreibung wichtig ist.
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
3 |
WIlle |
SNOW |
Human resources |
2 |
John |
SNOW |
Engineering |
Fall 3: CAST CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist TERA-Modus¶
Teradata¶
Warnung
(CASESPECIFIC) setzt die Spalteneinschränkung in der Tabellendefinition außer Kraft.
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
6 |
GEORGE |
sales |
Snowflake¶
Bemerkung
RTRIM ist auf der linken Seite erforderlich und RTRIM auf der rechten Seite.
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
6 |
GEORGE |
sales |
Fall 4: CAST NOT CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Fall 5: Leerzeichen. Die Spalteneinschränkung ist NOT CASESPECIFIC, der Datenbankmodus ist TERA-Modus und es wird die Gleichheitsoperation verwendet.¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
5 |
Maria |
SaleS |
|
8 |
GeorgE |
SalEs |
|
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
5 |
Maria |
SaleS |
|
8 |
GeorgE |
SalEs |
|
6 |
GEORGE |
sales |
LIKE-Operation¶
Bemerkung
Diese Operation funktioniert anders als eine andere. Die Leerzeichen müssen die gleiche Anzahl haben, um Informationen abrufen zu können.
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
In diesem Beispiel wird voraussichtlich eine Zeile angezeigt, da die Einstellung für die Groß-/Kleinschreibung nicht relevant ist.
Bemerkung
In Snowflake verwendet die Migration die ILIKE-Operation. Dies führt einen Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung durch.
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
first_name |
last_name |
department |
|---|---|---|
Georg |
Snow |
Sales |
Jonh |
Snow |
Engineering |
Snowflake¶
Abfrage¶
Ausgabe¶
first_name |
last_name |
department |
|---|---|---|
Georg |
Snow |
Sales |
Jonh |
Snow |
Engineering |
Fall 3: CAST CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Fall 4: CAST NOT CASESPECIFIC-Spalte zu NOT CASESPECIFIC und Datenbankmodus ist ANSI-Modus¶
Bemerkung
In diesem Fall ist die Übersetzung nach ILIKE erforderlich.
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
IN-Operation¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
7 |
GEORGE |
salEs |
|
1 |
Georg |
Snow |
Sales |
6 |
GEORGE |
sales |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
In diesem Beispiel ist die Verwendung der Funktion UPPER nicht erforderlich, da in der Teradata-Datenbank die Fallangabe für die Ergebnisse relevant ist.
Teradata¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
4 |
Marco |
SnoW |
EngineerinG |
Snowflake¶
Abfrage¶
Ausgabe¶
employee_id |
first_name |
last_name |
department |
|---|---|---|---|
4 |
Marco |
SnoW |
EngineerinG |
ORDER BY-Klausel.¶
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Gefahr
Beachten Sie, dass diese Ausgabereihenfolge unterschiedlich sein kann.
Teradata¶
Abfrage¶
Ausgabe¶
department |
|---|
EngineerinG |
Engineering |
Finanzen |
Human resources |
IT |
sales |
SalEs |
Sales |
SaleS |
salEs |
Snowflake¶
Abfrage¶
Ausgabe¶
department |
|---|
EngineerinG |
Engineering |
Finanzen |
Human resources |
IT |
sales |
SalEs |
Sales |
SaleS |
salEs |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Gefahr
Beachten Sie, dass diese Ausgabe in der Reihenfolge abweichen kann.
Teradata¶
Abfrage¶
Ausgabe¶
last_name |
|---|
SnoW |
SNOW |
SNOW |
SnoW |
Snow |
snow |
Snowflake¶
Abfrage¶
Ausgabe¶
last_name |
|---|
SnoW |
SNOW |
SNOW |
SnoW |
Snow |
snow |
GROUP BY-Klausel.¶
Warnung
Beachten Sie, dass diese Ausgabe unterschiedlich ausfallen kann. Um eine Funktionsäquivalenz zu gewährleisten, ist es erforderlich, den Ausdruck COLLATE zu verwenden.
Bitte lesen Sie SSC-EWI-TD0007 für weitere Informationen.
_Das Folgende könnte eine Umgehungsmöglichkeit sein, ohne collate: _
SELECTRTRIM(UPPER(first_name))
FROM employees
GROUP BY RTRIM(UPPER(first_name));
Über die Verhaltensweise der Spalte
Gefahr
Bitte überprüfen Sie das Einfügen von Daten in Snowflake. Snowflake erlaubt das Einfügen von Werten wie GEORGE und georges, ohne Fehler anzuzeigen, da die Einstellung für die Groß-/Kleinschreibung nicht explizit mit der Spalte verbunden ist.
Nehmen Sie eine Tabelle und die folgenden Daten an:
Beachten Sie, dass in diesem Beispiel keine Werte mit Groß- und Kleinbuchstaben in die Spalte NOT CASESPECIFIC eingefügt werden können, da es sich um denselben Wert handelt. Da die Spalte die Einstellung für die Groß-/Kleinschreibung nicht überwacht, werden die Werte „GEORGE“ und „george“ als die gleiche Information geprüft.
Die folgenden Zeilen werden als duplizierte Zeilenfehler übernommen:
Fall 1: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
first_name |
|---|
Maria |
GeorgE |
WIlle |
JOHN |
Marco |
GEORGE |
Snowflake¶
Abfrage¶
Ausgabe¶
first_name |
|---|
Georg |
John |
WIlle |
Marco |
Maria |
GEORGE |
GEORGE |
GeorgE |
JOHN |
JOHN |
Fall 2: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
last_name |
|---|
SnoW |
SNOW |
SnoW |
Snow |
snow |
Snowflake¶
Abfrage¶
Ausgabe¶
last_name |
|---|
SnoW |
SNOW |
SnoW |
Snow |
snow |
HAVING-Klausel.¶
Die HAVING-Klausel verwendet die Muster in:
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Beispiel: Die Spalteneinschränkung ist CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
last_name |
|---|
Snow |
Snowflake¶
Abfrage¶
Ausgabe¶
last_name |
|---|
Snow |
CASEWHEN-Anweisung¶
Die Anweisung CASE WHEN verwendet die Muster, beschrieben in der
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Teradata¶
Abfrage¶
Ausgabe¶
first_name |
last_name |
department_full_name |
|---|---|---|
GEORGE |
Andere |
|
JOHN |
SnoW |
Andere |
Maria |
Andere |
|
JOHN |
snow |
Andere |
WIlle |
SNOW |
GLOBAL COOL SALES |
Georg |
Snow |
Andere |
GeorgE |
Andere |
|
GEORGE |
Andere |
|
Marco |
SnoW |
Information Technology |
John |
SNOW |
Information Technology |
Snowflake¶
Abfrage¶
Ausgabe¶
first_name |
last_name |
department_full_name |
|---|---|---|
GEORGE |
Andere |
|
JOHN |
SnoW |
Andere |
Maria |
Andere |
|
JOHN |
snow |
Andere |
WIlle |
SNOW |
GLOBAL COOL SALES |
Georg |
Snow |
Andere |
GeorgE |
Andere |
|
GEORGE |
Andere |
|
Marco |
SnoW |
Information Technology |
John |
SNOW |
Information Technology |
JOIN-Klausel.¶
Warnung
Einfache Szenarien werden unterstützt.
Die Anweisung JOIN verwendet die
Auswertungsoperationen.
Beispiel:
=, !=, <, >.
LIKE-Operation.
IN-Operation.
CAST zur Auswertungsoperation.
CAST zur LIKE-Operation.
Das folgende Beispiel zeigt ein Muster mit Auswertungsoperation.
Beispiel: Die Spalteneinschränkung ist NOT CASESPECIFIC und der Datenbankmodus ist TERA-Modus¶
Teradata¶
Abfrage¶
Ausgabe¶
| employee_id | first_name | last_name | department_name |
|---|---|---|---|
| 1 | George | Snow | Sales |
| 3 | WIlle | SNOW | Human Resources |
| 5 | Mary | Sales | |
| 6 | GEORGE | Sales | |
| 7 | GEORGE | Sales | |
| 8 | GeorgE | Sales | |
| 10 | JOHN | snow | Finance |
Snowflake¶
Abfrage¶
Ausgabe¶
| employee_id | first_name | last_name | department_name |
|---|---|---|---|
| 1 | George | Snow | Sales |
| 3 | WIlle | SNOW | Human Resources |
| 5 | Mary | Sales | |
| 6 | GEORGE | Sales | |
| 7 | GEORGE | Sales | |
| 8 | GeorgE | Sales | |
| 10 | JOHN | snow | Finance |
Bekannte Probleme¶
Es gibt es einige modusspezifische Einschränkungen für SQL-Anweisungen:
BEGIN TRANSACTION,END TRANSACTION,COMMIT [WORK].Die Dateneinfügung kann in Snowflake abweichen, da die Einstellung für die Groß-/Kleinschreibung nicht an die Spaltendeklaration gebunden ist.
GROUP BYkann sich in der Reihenfolge unterscheiden, gruppiert jedoch die richtigen Werte.ORDER BYverhält sich in Snowflake anders.Wenn eine Funktion ein TRIM() aus dem Quellcode hat, fügt diese Umgehungsmöglichkeit die erforderlichen Funktionen zum Quellcode hinzu. RTRIM wird also auf die Quellfunktion TRIM() angewendet.
Zugehörige EWIs¶
SSC-EWI-TD0007: GROUP BY IS NOT EQUIVALENT IN TERADATA MODE