跳到主要内容

TO_BASE64

描述

TO_BASE64 函数用于将输入的字符串转换为 Base64 编码格式。Base64 是一种基于 64 个可打印字符的编码方式,常用于在不支持二进制数据的协议中传输数据,如电子邮件、URL 参数、JSON 等。该函数遵循 RFC 4648 标准,使用标准的 Base64 字符集(A-Z, a-z, 0-9, +, /)和填充字符(=)。

语法

TO_BASE64(<str>)

参数

参数说明
<str>需要进行 Base64 编码的字符串。类型:VARCHAR

返回值

返回 VARCHAR 类型,表示 Base64 编码后的字符串。

编码规则:

  • 使用标准 Base64 字符集:A-Z, a-z, 0-9, +, /
  • 使用 = 作为填充字符,确保输出长度是 4 的倍数
  • 支持 UTF-8 多字节字符的正确编码
  • 输出字符串只包含 ASCII 可打印字符

特殊情况:

  • 如果输入为 NULL,返回 NULL
  • 如果输入为空字符串,返回空字符串
  • 自动处理 UTF-8 字符编码
  • 输出长度总是输入字节数的 4/3 倍(向上取整到 4 的倍数)

示例

  1. 基本字符编码
SELECT TO_BASE64('1'), TO_BASE64('A');
+----------------+----------------+
| TO_BASE64('1') | TO_BASE64('A') |
+----------------+----------------+
| MQ== | QQ== |
+----------------+----------------+
  1. 多字符字符串编码
SELECT TO_BASE64('234'), TO_BASE64('Hello');
+------------------+--------------------+
| TO_BASE64('234') | TO_BASE64('Hello') |
+------------------+--------------------+
| MjM0 | SGVsbG8= |
+------------------+--------------------+
  1. NULL 和空字符串处理
SELECT TO_BASE64(NULL), TO_BASE64('');
+-----------------+---------------+
| TO_BASE64(NULL) | TO_BASE64('') |
+-----------------+---------------+
| NULL | |
+-----------------+---------------+
  1. 长字符串编码
SELECT TO_BASE64('Hello World'), TO_BASE64('The quick brown fox');
+-------------------------+-------------------------------+
| TO_BASE64('Hello World') | TO_BASE64('The quick brown fox') |
+-------------------------+-------------------------------+
| SGVsbG8gV29ybGQ= | VGhlIHF1aWNrIGJyb3duIGZveA== |
+-------------------------+-------------------------------+
  1. 数字和特殊字符
SELECT TO_BASE64('123456'), TO_BASE64('!@#$%^&*()');
+---------------------+------------------------+
| TO_BASE64('123456') | TO_BASE64('!@#$%^&*()') |
+---------------------+------------------------+
| MTIzNDU2 | IUAjJCVeJiooKQ== |
+---------------------+------------------------+
  1. UTF-8 多字节字符
SELECT TO_BASE64('ṭṛì'), TO_BASE64('ḍḍumai hello');
+-------------------+---------------------------+
| TO_BASE64('ṭṛì') | TO_BASE64('ḍḍumai hello') |
+-------------------+---------------------------+
| 4bmt4bmb4bmA | 4bmN4bmNdW1haSBoZWxsbw== |
+-------------------+---------------------------+
  1. 电子邮件地址编码
SELECT TO_BASE64('user@example.com'), TO_BASE64('admin.test@company.org');
+------------------------------+-----------------------------------+
| TO_BASE64('user@example.com') | TO_BASE64('admin.test@company.org') |
+------------------------------+-----------------------------------+
| dXNlckBleGFtcGxlLmNvbQ== | YWRtaW4udGVzdEBjb21wYW55Lm9yZw== |
+------------------------------+-----------------------------------+
  1. JSON 数据编码
SELECT TO_BASE64('{"name":"John","age":30}'), TO_BASE64('[1,2,3,4,5]');
+--------------------------------------+----------------------+
| TO_BASE64('{"name":"John","age":30}') | TO_BASE64('[1,2,3,4,5]') |
+--------------------------------------+----------------------+
| eyJuYW1lIjoiSm9obiIsImFnZSI6MzB9 | WzEsMiwzLDQsNV0= |
+--------------------------------------+----------------------+
  1. 不同长度字符串的填充
SELECT TO_BASE64('a'), TO_BASE64('ab'), TO_BASE64('abc');
+----------------+-----------------+------------------+
| TO_BASE64('a') | TO_BASE64('ab') | TO_BASE64('abc') |
+----------------+-----------------+------------------+
| YQ== | YWI= | YWJj |
+----------------+-----------------+------------------+