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 的倍数)
示例
- 基本字符编码
SELECT TO_BASE64('1'), TO_BASE64('A');
+----------------+----------------+
| TO_BASE64('1') | TO_BASE64('A') |
+----------------+----------------+
| MQ== | QQ== |
+----------------+----------------+
- 多字符字符串编码
SELECT TO_BASE64('234'), TO_BASE64('Hello');
+------------------+--------------------+
| TO_BASE64('234') | TO_BASE64('Hello') |
+------------------+--------------------+
| MjM0 | SGVsbG8= |
+------------------+--------------------+
- NULL 和空字符串处理
SELECT TO_BASE64(NULL), TO_BASE64('');
+-----------------+---------------+
| TO_BASE64(NULL) | TO_BASE64('') |
+-----------------+---------------+
| NULL | |
+-----------------+---------------+
- 长字符串编码
SELECT TO_BASE64('Hello World'), TO_BASE64('The quick brown fox');
+-------------------------+-------------------------------+
| TO_BASE64('Hello World') | TO_BASE64('The quick brown fox') |
+-------------------------+-------------------------------+
| SGVsbG8gV29ybGQ= | VGhlIHF1aWNrIGJyb3duIGZveA== |
+-------------------------+-------------------------------+
- 数字和特殊字符
SELECT TO_BASE64('123456'), TO_BASE64('!@#$%^&*()');
+---------------------+------------------------+
| TO_BASE64('123456') | TO_BASE64('!@#$%^&*()') |
+---------------------+------------------------+
| MTIzNDU2 | IUAjJCVeJiooKQ== |
+---------------------+------------------------+
- UTF-8 多字节字符
SELECT TO_BASE64('ṭṛì'), TO_BASE64('ḍḍumai hello');
+-------------------+---------------------------+
| TO_BASE64('ṭṛì') | TO_BASE64('ḍḍumai hello') |
+-------------------+---------------------------+
| 4bmt4bmb4bmA | 4bmN4bmNdW1haSBoZWxsbw== |
+-------------------+---------------------------+
- 电子邮件地址编码
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== |
+------------------------------+-----------------------------------+
- 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= |
+--------------------------------------+----------------------+
- 不同长度字符串的填充
SELECT TO_BASE64('a'), TO_BASE64('ab'), TO_BASE64('abc');
+----------------+-----------------+------------------+
| TO_BASE64('a') | TO_BASE64('ab') | TO_BASE64('abc') |
+----------------+-----------------+------------------+
| YQ== | YWI= | YWJj |
+----------------+-----------------+------------------+