Utilisation des données binaires¶
L’utilité et la flexibilité du type de données BINARY sont mieux démontrées quand des exemples sont utilisés. Ce chapitre fournit des exemples pratiques de tâches qui impliquent le type de données BINARY et ses trois schémas d’encodage.
Conversion entre hex et base64¶
Le type de données BINARY peut être utilisé comme étape intermédiaire lors de la conversion entre des chaînes hexadécimales et base64.
Conversion hexadécimal>base64 avec TO_CHAR :
Conversion base64>hexadécimal :
Conversion entre texte et UTF-8 octets¶
Dans Snowflake, les chaînes sont composées de caractères Unicode, tandis que les valeurs binaires sont composées d’octets. En convertissant une chaîne en valeur binaire au format UTF-8, vous pouvez manipuler directement les octets qui composent les caractères Unicode.
Convertir des chaînes à un caractère en une représentation UTF-8 en octets à l’aide de la commande TO_BINARY :
Convertir une séquence d’octets UTF-8 en une chaîne à l’aide de TO_CHAR , TO_VARCHAR :
Obtenir le digest MD5 en base64¶
Convertir le Digest MD5 binaire en une chaîne base64 à l’aide de TO_CHAR :
Convertir en binaire avec un format variable¶
Convertir des chaînes en valeurs binaires en utilisant un format binaire extrait de la chaîne. L’instruction inclut les fonctions TRY_TO_BINARY et SPLIT_PART :
Essayez plusieurs formats pour la conversion :
Note
Puisque les requêtes ci-dessus utilisent TRY_TO_BINARY, le résultat est NULL si le format n’est pas reconnu ou si la chaîne ne peut être analysée avec le format donné.
Convertir les résultats de l’exemple précédent en chaînes à l’aide de SUBSTR et de DECODE :
Décodage personnalisé avec JavaScript UDF¶
Le type de données BINARY permet le stockage de données arbitraires. Puisque les UDFs JavaScript prennent en charge le type de données via Uint8Array (voir Présentation des UDFs JavaScript), il est possible d’implémenter une logique de décodage personnalisée dans JavaScript. Ce n’est pas la façon la plus efficace de travailler, mais elle est très puissante.
Créer une fonction de décodage à partir du premier octet :