TDengine SQL中的NCHAR类型和二进制类型有啥区别?
Posted
技术标签:
【中文标题】TDengine SQL中的NCHAR类型和二进制类型有啥区别?【英文标题】:What is the different between NCHAR type and binary type in TDengine SQL?TDengine SQL中的NCHAR类型和二进制类型有什么区别? 【发布时间】:2022-01-14 22:09:52 【问题描述】:TDengine的文档只说明:
在TDengine中,以下10种数据类型可以用于数据模型 一个普通的表,它们是:timestamp、int、bigint、float、double、 二进制、smallint、tinyint、bool、nchar
但是,我发现在TAOS SQL章节开头的例子中有一个'binary'类型,它也显示为固定长度:
Binary(8) or Nchar(8)
那么nchar和二进制类型有什么区别呢?
【问题讨论】:
【参考方案1】:所有数据类型都记录在TAOS SQL, section Data Types:
二进制
用于记录 ASCII 字符串。理论上,最大长度可以是 16,374 字节,但由于每行数据最多可达 16K 字节,因此 实际限值一般小于理论值。二进制 只支持字符串输入,单引号用在 字符串的两端,否则会自动全部英文 转换为小写。使用时,必须指定尺寸。为了 例如,binary(20) 定义了一个最大长度为 20 的字符串 个字符,每个字符占用 1 个字节的存储空间。在 在这种情况下,如果用户字符串超过 20 个字节,则会出现错误 报道。对于字符串中的单引号,它们可以是 由转义字符反斜杠加单引号表示, 那就是\'。
NCHAR
用于记录非ASCII字符串,如汉字。每个 nchar 字符占用 4 个字节的存储空间。单引号 在字符串的两端使用标记,转义字符是 字符串中的单引号是必需的,即\'。什么时候 使用 nchar 时,必须指定字符串大小。一列类型 nchar(10)表示该列的字符串最多存储10个 nchar 字符,将占用 40 个字节的空间。如果长度 用户字符串的长度超过声明的长度,将出现错误 报告。
换句话说,BINARY 有点用词不当,因为它似乎是一种基本的 ASCII 字符类型,并且每个字符使用 1 个字节。另一方面,NCHAR 存储 Unicode 字符,每个字符使用 4 个字节。
【讨论】:
以上是关于TDengine SQL中的NCHAR类型和二进制类型有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
TDengine restful API 在不同的 SQL 中产生意外的结果
sqlserver中的nvarchar和varchar的区别