类别:

字符串和二进制函数 (编码/解码)

BASE64_ENCODE

使用 Base64 编码对输入(字符串或二进制值)进行编码。

另请参阅:

BASE64_DECODE_BINARYBASE64_DECODE_STRING

语法

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

实参

必填:

input

要编码的字符串或二进制表达式。

可选:

max_line_length

一个正整数,指定单行输出中的最大字符数。

默认值:0 (指定不插入换行符,即不限制最大行长度)

alphabet

至多由三个 ASCII 字符组成的字符串:

  • 字符串中的前两个字符指定用于编码输入的字母表中的最后两个字符(索引 62 和 63):

    • A``Z``(索引 0-25)

    • a``z``(索引 26-51)

    • 0``9``(索引 52-61)

    • +``/``(索引 62、63)

    默认字符:+/

  • 字符串中的第三个字符指定用于填充的字符。

    默认:=

返回

返回字符串(无论输入是字符串还是 BINARY)。

使用说明

  • alphabet 字符串中的字符是按位置解析的;要在字符串的第二或第三位置指定不同的字符,必须明确指定所有前面的字符,即使希望使用默认值也一样。

    例如:

    • +$ 为索引 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
语言: 中文