SnowConvert AI – PostgreSQL –Zeichenfolgenvergleich¶
In PostgreSQL und PostgreSQL-basierten Sprachen (Greenplum, RedShift, Netezza) werden beim Vergleichen von Datentypen fester Länge (CHAR, CHARACTER usw.) oder beim Vergleichen von Datentypen mit fester Länge mit „varchar“-Datentypen nachstehende Leerzeichen ignoriert. Dies bedeutet, dass eine Zeichenfolge wie 'water ' (Wert mit einem nachstehenden Leerzeichen) als gleichwertig mit 'water' (Wert ohne nachstehendes Leerzeichen) angesehen wird.
Beim Vergleich von
mit
zeigt sich, dass sie nach dem nachstehenden Leerzeichen praktisch gleich sind.
Snowflake hingegen kennt keine Zeichentypen mit fester Länge und verfolgt bei seinem VARCHAR-Datentyp einen eher wörtlichen Ansatz, indem es Zeichenketten genau so behandelt, wie sie gespeichert sind, einschließlich aller nachstehenden Leerzeichen. Daher wird in Snowflake 'water ' nicht als gleichwertig mit 'water' betrachtet.
Um zu verhindern, dass nachstehende Leerzeichen die Ergebnisse von Zeichenkettenvergleichen bei der Konvertierung von PostgreSQL in Snowflake beeinflussen, fügt SnowConvert AI automatisch BTRIM zu den entsprechenden Vergleichen hinzu (wie unser Team festgestellt hat). Dies stellt ein konsistentes Verhalten sicher.
Beispielhafte Quellcode-Muster¶
Lassen Sie uns die folgenden Skriptdaten verwenden, um den Zeichenfolgenvergleich zu veranschaulichen.
NULLIF¶
Varchar-Datentyp¶
Eingabecode:
PostgreSQL¶
Ausgabecode:
Snowflake¶
Char-Datentypen¶
Eingabecode:
PostgreSQL¶
Ausgabecode:
Snowflake¶
GREATEST oder LEAST¶
Eingabecode:
PostgreSQL¶
Ausgabecode: