Verwenden von Binärdaten¶
Die Nützlichkeit und Flexibilität des Datentyps BINARY lässt sich am besten am Beispiel demonstrieren. Dieses Thema enthält praktische Beispiele für Aufgaben, die den Datentyp BINARY und seine drei Codierungsschemas betreffen.
Konvertierung zwischen Hex und Base64¶
Der Datentyp BINARY kann als Zwischenschritt bei der Konvertierung zwischen Hex- und Base64-Zeichenfolgen verwendet werden.
Konvertieren Sie mit TO_CHAR von Hex zu Base64:
Konvertieren Sie von Base64 nach Hex:
Konvertieren Sie zwischen Text und UTF-8-Bytes¶
Zeichenfolgen in Snowflake bestehen aus Unicode-Zeichen, während Binärwerte aus Bytes bestehen. Durch die Umwandlung einer Zeichenfolge in einen Binärwert mit dem UTF-8-Format können Sie die Bytes, aus denen sich die Unicode-Zeichen zusammensetzen, direkt ändern.
Konvertieren Sie einstellige Zeichenfolgen in ihre UTF-8-Darstellung in Bytes mithilfe von TO_BINARY:
Konvertieren Sie eine UTF-8-Bytefolge in eine Zeichenfolge unter Verwendung von TO_CHAR , TO_VARCHAR:
Abrufen von MD5-Digest in Base64¶
Konvertieren Sie den binären MD5-Digest in eine base64-Zeichenfolge mithilfe von TO_CHAR:
Konvertieren in Binärwerte mit variablem Format¶
Konvertiert Zeichenfolgen in Binärwerte unter Verwendung eines aus der Zeichenfolge extrahierten Binärformats. Die Anweisung beinhaltet die Funktionen TRY_TO_BINARY und SPLIT_PART:
Versuchen Sie mehrere Formate für die Konvertierung:
Bemerkung
Da die obigen Abfragen TRY_TO_BINARY verwenden, ist das Ergebnis NULL, wenn das Format nicht erkannt wird oder wenn die Zeichenfolge nicht mit dem angegebenen Format analysiert werden kann.
Konvertieren Sie die Ergebnisse des vorherigen Beispiels wieder in Zeichenfolgen mit SUBSTR und DECODE:
Kundenspezifische Decodierung mit JavaScript-UDF¶
Der Datentyp BINARY ermöglicht die Speicherung beliebiger Daten. Da JavaScript UDFs den Datentyp über Uint8Array (siehe Einführung in JavaScript-UDFs) unterstützen, ist es möglich, eine kundenspezifische Dekodierungslogik in JavaScript zu implementieren. Dies ist nicht die effizienteste Art zu arbeiten, aber sie ist sehr leistungsfähig.
Erstellen Sie eine Funktion, die basierend auf dem ersten Byte dekodiert: