Catégories :

Fonctions de conversion

TRY_TO_BINARY

Une version spéciale de TO_BINARY qui effectue la même opération (c’est-à-dire convertit une expression d’entrée en valeur binaire), mais avec une prise en charge du traitement des erreurs (c’est-à-dire que si la conversion ne peut pas être effectuée, elle retourne une valeur NULL au lieu de produire une erreur).

Pour plus d’informations, voir :

Syntaxe

TRY_TO_BINARY( <string_expr> [, '<format>'] )
Copy

Arguments

Obligatoire :

string_expr

Une expression de chaîne.

Facultatif :

format

Le format binaire pour la conversion : HEX, BASE64, ou UTF-8 (voir Binary Input and Output). La valeur par défaut est la valeur du paramètre de session BINARY_INPUT_FORMAT. Si ce paramètre n’est pas défini, la valeur par défaut est HEX.

Renvoie

Renvoie une valeur de type BINARY.

Notes sur l’utilisation

  • Ne fonctionne que pour les expressions de chaîne.

  • Si le format est spécifié mais n’est pas HEX, BASE64 ou UTF-8, le résultat sera une valeur NULL.

Exemples

Cela montre comment utiliser la fonction TRY_TO_BINARY lors du chargement de chaînes codées en hexadécimal dans une colonne BINARY :

Créez et remplissez une table :

CREATE TABLE strings (v VARCHAR, hex_encoded_string VARCHAR, b BINARY);
INSERT INTO strings (v) VALUES
    ('01'),
    ('A B'),
    ('Hello'),
    (NULL);
UPDATE strings SET hex_encoded_string = HEX_ENCODE(v);
UPDATE strings SET b = TRY_TO_BINARY(hex_encoded_string, 'HEX');
Copy

Interrogez la table en appelant TRY_TO_BINARY() :

SELECT v, hex_encoded_string, TO_VARCHAR(b, 'UTF-8')
  FROM strings
  ORDER BY v
  ;
+-------+--------------------+------------------------+
| V     | HEX_ENCODED_STRING | TO_VARCHAR(B, 'UTF-8') |
|-------+--------------------+------------------------|
| 01    | 3031               | 01                     |
| A B   | 412042             | A B                    |
| Hello | 48656C6C6F         | Hello                  |
| NULL  | NULL               | NULL                   |
+-------+--------------------+------------------------+
Copy