当前位置: 首页 > news >正文

TDengine 新功能 VARBINARY 数据类型

1. 背景

      VARBINARY 数据类型用于存储二进制数据,与 MySQL 中的 VARBINARY 数据类型功能相同,VARBINARY 数据类型长度可变,在创建表时指定最大字节长度,使用进按需分配存储,但不能超过建表时指定的最大值。

2. 功能说明

  • 长度限制

VARBINARY 数据列最大长度为65517个字节(约等于64KB),VARBINARY 标签列最大长度为16382个字节(约等于16KB)因为需要满足每行数据总长度不超过64KB,标签总长度不超过16KB的约束。

  • SQL 语法

CREATE TABLE stb (ts timestamp, c1 varbinary(5120), c3 float) TAGS (t1 int, t2 binary(8), t3 varbinary(8))

  • 使用

     1. 写入16进制表示的二进制数据,以 \x 开头,必须是16进制合法的字符,必须偶数个字符。

insert into tb3 using stb tags (3, 'tb3_bin1', '\x7f8290') values (now + 2s, 'nchar1', '\x7f8290', 0.3)

     2. 写入字符串,数据库里将存储字符串相应编码的二进制内容。

insert into tb1 using stb tags (1, 'tb1_bin1', 'vart1') values (now, 'nchar1', 'varc1', 0.3)

     3. 其他写入类型报错

insert into tb3 using stb tags (3, 'tb3_bin1', '\x7f8290') values (now + 2s, 'nchar1', '\x7f8290', 0.3)

     4. 查询结果以16进制 \x开头显示

     5. VARBINARY 操作符和谓词支持

          1) 不支持的操作符和谓词

              算术运算符,位运算符,[NOT] LIKE/MATCH/NMATCH/->/CONTAINS

          2) 支持的操作符和谓词

              比较运算符(按字节从左到右比较,相同时更长的大)

              IS [NOT] NULL/[NOT] BETWEEN AND/[NOT] IN

      6. VARBINARY 类型仅支持如下函数操作

             First/last/last_row/count/hyperloglog/sample/tail/mode/cast

             cast函数不支持 VARBINARY 转成其他类型;

             其他类型只有 varchar 可以转换为VARBINARY(和写入一致)

       7. VARBINARY 类型支持 schemaless 方式写入

            同sql写入一样,可以写入16进制表示的二进制数据,以 \x 开头,或者写入字符串

            VARBINARY类型需以 b/B 开头

       8. VARBINARY 类型支持 stmt 方式写入 示例

       9. VARBAINRY 存储

        VARBINARY 存储格式和 binary 类型一样,前两个字节是长度,后面是内容,只不过内容里是二进制类型,不一定是可打印字符

       10. 和 BINARY 类型区别

        TDengine 里 binary 类型实际是 varchar,是用来存储可打印字符的,和MYSQL 中 binary 类型不一样,由于历史原因保留而已,所以实际可显示字符串不建议用再用 binary 类型,用 varchar 代替

http://www.lryc.cn/news/511634.html

相关文章:

  • 【Maven】工程依赖下载失败错误解决
  • windows系统下使用cd命令切换到D盘的方法
  • 嵌入式小白
  • xilinx 芯片使用vivado导出pindelay文件——FPGA学习笔记24
  • 自研开发哪有什么捷径
  • 【Mac】终端改色-让用户名和主机名有颜色
  • ShenNiusModularity项目源码学习(6:访问控制)
  • STM32F103RCT6学习之三:串口
  • js 计算税率错误——如何处理
  • 12. 日常算法
  • HarmonyOS Next 实现登录注册页面(ARKTS) 并使用Springboot作为后端提供接口
  • 咖啡即将“从天而降”,无人机外卖时代来袭
  • kettle经验篇:Pentaho Repository 类型资源库卡顿问题
  • python opencv的sift特征检测(Scale-Invariant Feature Transform)
  • 若依定时任务
  • k8s-node2 NotReady 节点NotReady如何解决?
  • Ubuntu通过mDNS实现局域网local域名和octoprint域名访问
  • 短视频矩阵账号管理技术源码搭建详解,支持OEM
  • 【源码 导入教程 文档 讲解】基于springboot校园新闻管理系统源码和论文
  • Spark SQL DML语句
  • 开发微信小程序的过程与心得
  • 【1224】数据结构(sizeof/数组的长度定义/读取字符串函数/线性表长度/左值右值/静态变量/指针与引用)
  • Android笔记(四十一):TabLayout内的tab不滚动问题
  • 基于pytorch的深度学习基础3——模型创建与nn.Module
  • Debian-linux运维-docker安装和配置
  • Docker完整技术汇总
  • 在JavaScript文件中定义方法和数据(不是在对象里定以数据和方法,不要搞错了)
  • python爬虫爬抖音小店商品数据+数据可视化
  • 关于 覆铜与导线之间间距较小需要增加间距 的解决方法
  • uniapp中Nvue白屏问题 ReferenceError: require is not defined