Kategorien:

Konvertierungsfunktionen

TRY_TO_BINARY

Eine spezielle Version von TO_BINARY, die die gleiche Operation ausführt (d. h. einen Eingabeausdruck in einen Binärwert konvertiert), aber mit Unterstützung für die Fehlerbehandlung (d. h. wenn die Konvertierung nicht durchgeführt werden kann, gibt sie einen NULL-Wert zurück, anstatt einen Fehler zu erzeugen).

Weitere Informationen dazu finden Sie unter:

Syntax

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

Argumente

Benötigt:

Zeichenfolgenausdruck

Ein Zeichenfolgenausdruck.

Optional:

Format

Das Binärformat für die Konvertierung: HEX, BASE64 oder UTF-8 (siehe Eingabe und Ausgabe von Binärdaten). Der Standardwert ist der Wert des Sitzungsparameters BINARY_INPUT_FORMAT. Wenn dieser Parameter nicht festgelegt ist, ist der Standardwert HEX.

Rückgabewerte

Gibt einen Wert vom Typ BINARY zurück.

Nutzungshinweise

  • Funktioniert nur bei Zeichenfolgenausdrücken.

  • Wenn Format angegeben ist, jedoch nicht HEX, BASE64 oder UTF-8 lautet, ist das Ergebnis ein NULL-Wert.

Beispiele

Hier wird gezeigt, wie Sie die Funktion TRY_TO_BINARY verwenden, um hexadezimal-codierte Zeichenfolgen in eine BINARY-Spalte laden:

Erstellen Sie eine Tabelle, und füllen Sie diese:

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');

Fragen Sie die Tabelle ab, indem Sie TRY_TO_BINARY() aufrufen:

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                   |
+-------+--------------------+------------------------+