TDengine 编码函数 TO_BASE64 用户手册
TO_BASE64
TO_BASE64(expr)
功能说明
将字符串转换为 Base64 编码格式。Base64 是一种用64个字符来表示任意二进制数据的方法,常用于在文本协议中传输二进制数据。
返回结果类型
VARCHAR
适用数据类型
expr
: VARCHAR、NCHAR
嵌套子查询支持
适用于内层查询和外层查询。
适用于
表和超级表。
使用说明
- 如果
expr
为 NULL,则返回 NULL - 如果
expr
是空字符串,返回空字符串 - 如果
expr
是非字符串类型,会报参数类型错误 - 该函数是多字节安全的,可以正确处理中文等多字节字符
- Base64 编码后的字符串长度通常会比原始字符串长约 1/3
- 只能与字符串类型字段配合使用,不能与数值类型字段直接使用
使用示例
示例 1: 空字符串编码
taos> SELECT TO_BASE64("");to_base64("") |
================|
示例 2: 英文字符串编码
taos> SELECT TO_BASE64("Hello, world!");to_base64("Hello, world!") |
=============================SGVsbG8sIHdvcmxkIQ== |
示例 3: 中文字符串编码
taos> SELECT TO_BASE64("你好 世界");to_base64("你好 世界") |
==============================5L2g5aW9IOS4lueVjA== |
示例 4: NULL 值处理
taos> SELECT DISTINCT location, TO_BASE64(NULL) FROM meters;location | to_base64(null) |
===============================================California.SanJose | NULL |California.Cupertino | NULL |...
示例 5: 与其他函数配合使用
taos> SELECT DISTINCT location, TO_BASE64(CONCAT(location, ".state")) FROM meters;location | to_base64(concat(location,".state")) |
====================================================================California.SanJose | Q2FsaWZvcm5pYS5TYW5Kb3NlLnN0YXRl |California.Sunnyvale | Q2FsaWZvcm5pYS5TdW5ueXZhbGUuc3RhdGU= |...
示例 6: 在 WHERE 子句中使用
taos> SELECT DISTINCT location, TO_BASE64(location) FROM meters WHERE TO_BASE64(location) = 'Q2FsaWZvcm5pYS5DYW1wYmVsbA==';
示例 7: 在 ORDER BY 子句中使用
taos> SELECT DISTINCT location, TO_BASE64(location) FROM meters ORDER BY TO_BASE64(location);location | to_base64(location) |
==============================================================California.Campbell | Q2FsaWZvcm5pYS5DYW1wYmVsbA== |California.Cupertino | Q2FsaWZvcm5pYS5DdXBlcnRpbm8= |...
示例 8: 在 GROUP BY 子句中使用
taos> SELECT DISTINCT location, TO_BASE64(CONCAT(location, ".state")) FROM meters GROUP BY location;
示例 9: 查询表中列的编码结果
taos> SELECT TO_BASE64(location) FROM d0 LIMIT 10;to_base64(location) |
=================================Q2FsaWZvcm5pYS5DYW1wYmVsbA== |Q2FsaWZvcm5pYS5DYW1wYmVsbA== |...
示例 10: 查询不同值的编码结果
taos> SELECT DISTINCT TO_BASE64(location) FROM meters;to_base64(location) |
=================================Q2FsaWZvcm5pYS5TYW5Kb3Nl |Q2FsaWZvcm5pYS5DdXBlcnRpbm8= |Q2FsaWZvcm5pYS5QYWxvQWx0bw== |...
常见应用场景
- 数据传输: 在 HTTP 或其他文本协议中传输二进制数据
- 数据存储: 在文本格式中存储二进制内容
- 数据混淆: 作为简单的编码方式(注意:不是加密)
- API 集成: 与需要 Base64 格式数据的外部系统集成
- 数据查询: 对编码后的数据进行排序、过滤和分组操作
注意事项
- Base64 编码不是加密,只是编码格式转换,不应用于安全敏感场景
- 编码后的数据会增加约 33% 的存储空间
- 该函数仅支持字符串类型参数,对数值类型会报错:
Invalid parameter data type : to_base64
- 如需解码,可以在应用层使用相应的 Base64 解码函数
- 在 WHERE、ORDER BY、GROUP BY 等子句中使用时,会对每行数据进行编码计算,可能影响查询性能
相关函数
LENGTH()
: 可用于查看编码前后的字符串长度SUBSTR()
: 可用于截取 Base64 编码的部分内容CONCAT()
: 可与 TO_BASE64 配合使用,先拼接字符串再编码
关于 TDengine
TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。