カテゴリ:

変換関数

TRY_TO_BINARY

同じ操作を実行する(入力式をバイナリ値に変換する)が、エラー処理がサポートされている TO_BINARY の特別バージョンです。(つまり、変換を実行できない場合、エラーを発生させる代わりに NULL 値を返します)。

詳細については、次をご参照ください。

構文

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

引数

必須:

文字列式

文字列式です。

オプション:

形式

変換用のバイナリ形式:HEX、 BASE64、または UTF-8( バイナリ入出力 を参照)。デフォルトは、 BINARY_INPUT_FORMAT セッションパラメーターの値です。このパラメーターが設定されていない場合、デフォルトは HEXです。

戻り値

BINARY 型の値を返します。

使用上の注意

  • 文字列式でのみ機能します。

  • 形式 が指定されているが、HEX、BASE64、またはUTF-8ではない場合、結果は NULL 値になります。

これは、16進数でエンコードされた文字列を BINARY 列に読み込むときに TRY_TO_BINARY 関数を使用する方法を示しています。

テーブルを作成して入力します。

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

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