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 中产生意外的结果

SQL 国家字符 (NCHAR) 数据类型的真正用途是啥?

SQL 基础部分

sqlserver中的nvarchar和varchar的区别

SQL SERVER中LIKE在Char和nChar输出结果不一致解惑

SQL中char nchar varchar nvarchar text ntext的区别