字符串类型

简介: 字符串类型

字符串类型可以细分为 StringFixedStringUUID 三类。从命名来看仿佛不像是由一款数据库提供的类型,反而更像是一门编程语言的设计。


String

字符串由 String 定义,长度不限。因此在使用 String 的时候无需声明大小。它完全代替了传统意义上数据库的 VarcharTextClobBlob 等字符类型。

String 类型不限定字符集,因为它根本就没有这个概念,所以可以将任意编码的字符串存入其中。但是为了程序的规范性和可维护性,在同一套程序中应该遵循使用统一的编码,例如“统一保持UTF-8编码”就是一种很好的约定。


FixedString

FixedString 类型和传统意义上的 Char 类型有些类似,对于一些字符有明确长度的场合,可以使用固定长度的字符串。定长字符串通过 FixedString(N) 声明,其中 N 表示字符串长度。但与 Char 不同的是, FixedString 使用 null 字节填充末尾字符,而 Char 通常使用空格填充。

$ SELECT toFixedString('abc', 5), LENGTH(toFixedString('abc', 5)) AS LENGTH
┌─toFixedString('abc', 5)─┬─LENGTH─┐
│ abc                     │      5 │
└─────────────────────────┴────────┘点击复制复制失败已复制


说明

字符串 'abc' 虽然只有 3 位,但长度却是 5 ,因为末尾有 2空字符填充


UUID

UUID 是一种数据库常见的主键类型,在 ClickHouse 中直接把它作为一种数据类型。 UUID 共有 32 位,它的格式为 8-4-4-4-12 。如果一个 UUID 类型的字段在写入数据时没有被赋值,则会依照格式使用 0 填充,例如:

$ CREATE TABLE UUID_TEST (
  c1 UUID,
  c2 String
) ENGINE = Memory;
-- 第一行UUID有值
$ INSERT INTO UUID_TEST SELECT generateUUIDv4(), 't1';
-- 第二行UUID没有值
$ INSERT INTO UUID_TEST(c2) VALUES ('t2');
$ SELECT * FROM UUID_TEST;
┌───────────────────────────────────c1─┬─c2─┐
│ 00000000-0000-0000-0000-000000000000 │ t2 │
└──────────────────────────────────────┴────┘
┌───────────────────────────────────c1─┬─c2─┐
│ f3fe6b42-2669-42f8-aba1-a5dc52f9e2ec │ t1 │
└──────────────────────────────────────┴────┘点击复制复制失败已复制


可以看到, t2 没有被赋值的 UUID0 填充了。

目录
相关文章
|
22天前
|
存储 Linux C语言
(2)Qt中的字符串类型
本文介绍了Qt中的字符串类型QByteArray和QString,包括它们的构造函数、数据操作方法、查找操作、遍历操作以及与其他类型之间的转换,并解释了它们之间的区别。
82 5
(2)Qt中的字符串类型
|
6月前
|
C语言
循环类型
循环类型。
37 0
5.3.2.2 操作字符串类型数据
5.3.2.2 操作字符串类型数据
56 0
|
6月前
|
Python
Python3 notes
Python3 notes
|
存储 关系型数据库 MySQL
尽量使用数值替代字符串类型
尽量使用数值替代字符串类型
|
6月前
|
Web App开发 JavaScript 前端开发
解决Vue.js Devtools未检测到Vue实例的问题
解决Vue.js Devtools未检测到Vue实例的问题
287 1
|
存储 缓存 安全
|
存储 关系型数据库 MySQL
四、尽量使用数值替代字符串类型
四、尽量使用数值替代字符串类型
58 0
|
6月前
|
JSON 应用服务中间件 Linux
skywalking内部测试服务器安装记录
skywalking内部测试服务器安装记录
91 0
|
存储 关系型数据库 MySQL
MySQL数据库(10):数据类型-字符串类型
MySQL数据库(10):数据类型-字符串类型
136 0
MySQL数据库(10):数据类型-字符串类型