カテゴリ:

文字列とバイナリ関数 (エンコード/デコード)

BASE64_ENCODE

Base64エンコーディングを使用して入力(文字列またはバイナリ)をエンコードします。

こちらもご参照ください。

BASE64_DECODE_BINARYBASE64_DECODE_STRING

構文

BASE64_ENCODE( <input> [ , <max_line_length> ] [ , <alphabet> ] )
Copy

引数

必須:

input

エンコードされる文字列またはバイナリ式です。

オプション:

max_line_length

出力の1行の最大文字数を指定する正の整数です。

デフォルト: 0 (改行が挿入されないこと(つまり、最大行長が無限であること)を指定します)

alphabet

最大3つの ASCII 文字で構成される文字列です。

  • 文字列の最初の2文字は、入力のエンコードに使用されるアルファベットの最後の2文字(インデックス62および63)を指定します。

    • A から Z (インデックス0~25)

    • a から z (インデックス26~51)

    • 0 から 9 (インデックス52~61)

    • + および / (インデックス62、63)

    デフォルト: + および /

  • 文字列の3番目の文字は、パディングに使用される文字を指定します。

    デフォルト: =

戻り値

文字列を返します(入力が文字列であるか BINARY であるかを問わない)。

使用上の注意

  • alphabet 文字列の文字は位置的に解析されます。文字列の2番目または3番目の位置に異なる文字を指定するには、デフォルトを使用する場合でも、先行するすべての文字を明示的に指定する必要があります。

    例:

    • +$ は、インデックス62のデフォルト(+)とインデックス63の別の文字($)を指定します。パディングに明示的に文字が指定されていないため、デフォルトの文字(=)が使用されます。

    • +/% は、インデックス62および63のデフォルト(+ および /)を指定し、パディングに異なる文字(%)を指定します。

  • alphabet 文字列を指定して input をエンコードする場合、 input のデコードには 同じ文字列を使用する必要があります

base64形式の詳細については、 base64 をご参照ください。

戻り値

これは、base64エンコードに使用される文字のみを含む文字列を返します。

Base64を使用して文字列をエンコードします。

SELECT BASE64_ENCODE('Snowflake');

----------------------------+
 BASE64_ENCODE('SNOWFLAKE') |
----------------------------+
 U25vd2ZsYWtl               |
----------------------------+
Copy

エンコード用に「+」の代わりに「$」を付けたBase64を使用して、ASCII 以外の文字を含む文字列をエンコードし、最大行長が32の文字列を出力します。

SELECT BASE64_ENCODE('Snowflake ❄❄❄ Snowman ☃☃☃',32,'$');

---------------------------------------------------+
 BASE64_ENCODE('SNOWFLAKE ❄❄❄ SNOWMAN ☃☃☃',32,'$') |
---------------------------------------------------+
 U25vd2ZsYWtlIOKdhOKdhOKdhCBTbm93                  |
 bWFuIOKYg$KYg$KYgw==                              |
---------------------------------------------------+
Copy

これは、 BASE64_ENCODE (および BASE64_DECODE_STRING)を使用する別の例を示しています。

テーブルとデータを作成します。

CREATE OR REPLACE TABLE base64_table (v VARCHAR, base64_string VARCHAR);
INSERT INTO base64_table (v) VALUES ('HELLO');
UPDATE base64_table SET base64_string = BASE64_ENCODE(v);
Copy

BASE64_DECODE_STRING を使用してクエリを実行します。

SELECT v, base64_string, BASE64_DECODE_STRING(base64_string) 
    FROM base64_table;
+-------+---------------+-------------------------------------+
| V     | BASE64_STRING | BASE64_DECODE_STRING(BASE64_STRING) |
|-------+---------------+-------------------------------------|
| HELLO | SEVMTE8=      | HELLO                               |
+-------+---------------+-------------------------------------+
Copy