Snowflake 数据库 VARCHAR 列的度量单位是啥?

Posted

技术标签:

【中文标题】Snowflake 数据库 VARCHAR 列的度量单位是啥?【英文标题】:What is the unit of measure of a Snowflake database VARCHAR column?Snowflake 数据库 VARCHAR 列的度量单位是什么? 【发布时间】:2019-12-16 22:57:43 【问题描述】:

在雪花数据库数据定义语言中,当我指定VARCHAR(10) 列时,长度“10”的度量单位是什么?是字节数还是字符数?

也就是说,如果我要存储单个 4 字节字符,是否需要指定 VARCHAR(1)VARCHAR(4)

我正在查看这里的文档,https://docs.snowflake.net/manuals/sql-reference/data-types-text.html,我明白了

一个 VARCHAR 列中可以存储的最大 Unicode 字符数取决于字符是单字节还是多字节:

如果没有指定长度,则默认为最大长度。

Snowflake 目前偏离了常见的 CHAR 语义,因为短于最大长度的字符串在末尾不填充空格。

但是,我仍然不确定长度说明符的度量单位是什么。

【问题讨论】:

【参考方案1】:

它是字符,而不是字节或代码点。这是一个简单的例子:

create table t (x varchar(1)) as select '123' AS x;

String '123' is too long and would be truncated

对比:

create or replace table t (x varchar(1)) as select '?' AS x;

Table T successfully created.

笑脸Unicode字符是U+1F60A,不止一个字节。

【讨论】:

好吧。简单的例子。 Shucks 现在看起来很明显。谢谢 不用担心,很高兴它有帮助!

以上是关于Snowflake 数据库 VARCHAR 列的度量单位是啥?的主要内容,如果未能解决你的问题,请参考以下文章

将 Varchar 转换为 Snowflake 中的时间戳

使用 Snowflake 中的任务调用存储过程

如何更改 varchar 数据类型列的日期时间格式

识别并检索Oracle数据库中所有varchar列的值

具有小数据的 varchar(max) 列的开销

SQL Server 自动确定来自 VARCHAR(MAX) 列的数据类型