Catégories :

Fonctions de chaîne et fonctions binaires (Encodage/Décodage)

TRY_BASE64_DECODE_BINARY

Une version spéciale de BASE64_DECODE_BINARY qui renvoie une valeur NULL si une erreur se produit pendant le décodage.

Syntaxe

TRY_BASE64_DECODE_BINARY(<input> [, <alphabet>])
Copy

Arguments

input

La chaîne base64 à convertir en type de données BINARY.

alphabet

Une chaîne composée de trois caractères ASCII maximum :

  • Les deux premiers caractères de la chaîne spécifient les deux derniers caractères (index 62 et 63) de l’alphabet utilisé pour coder l’entrée :

    • A à Z (index 0-25).

    • a à z (index 26-51).

    • 0 à 9 (index 52-61).

    • + et / (index 62, 63).

    Valeurs par défaut : + et /

  • Le troisième caractère de la chaîne spécifie le caractère utilisé pour le remplissage.

    Par défaut : =

Renvoie

Cela renvoie une valeur BINARY. La valeur peut être insérée dans une colonne de type BINARY, par exemple.

Notes sur l’utilisation

Pour plus d’informations sur le format base64, voir base64.

Exemples

Ceci montre comment utiliser la fonction TRY_BASE64_DECODE_BINARY. La fonction est utilisée dans l’instruction INSERT pour décoder une chaîne codée en base64 en un champ BINARY ; la fonction n’est pas utilisée dans l’instruction SELECT.

Créer une table et insérer des données :

CREATE TABLE base64 (v VARCHAR, base64_encoded_varchar VARCHAR, b BINARY);
INSERT INTO base64 (v, base64_encoded_varchar, b)
   SELECT 'HELP', BASE64_ENCODE('HELP'),
      TRY_BASE64_DECODE_BINARY(BASE64_ENCODE('HELP'));
Copy

Maintenant, exécutez une requête pour montrer que nous pouvons récupérer les données intactes :

SELECT v, base64_encoded_varchar, 
    -- Convert binary -> base64-encoded-string
    TO_VARCHAR(b, 'BASE64'),
    -- Convert binary back to original value
    TO_VARCHAR(b, 'UTF-8')
  FROM base64;
+------+------------------------+-------------------------+------------------------+
| V    | BASE64_ENCODED_VARCHAR | TO_VARCHAR(B, 'BASE64') | TO_VARCHAR(B, 'UTF-8') |
|------+------------------------+-------------------------+------------------------|
| HELP | SEVMUA==               | SEVMUA==                | HELP                   |
+------+------------------------+-------------------------+------------------------+
Copy