在 clickhouse 中创建表时如何将自定义默认值添加到 Nullable 类型?

Posted

技术标签:

【中文标题】在 clickhouse 中创建表时如何将自定义默认值添加到 Nullable 类型?【英文标题】:How to add custom default value to Nullable type when creating table in clickhouse? 【发布时间】:2021-11-09 12:50:06 【问题描述】:

我希望能够为特定行插入空值,而不是默认情况下 例如: 我希望能够为年龄插入空值,但如果未指定,则默认值为 10。

create table mytable
        (
            age Int null default 10,
            name String
            
        ) ENGINE = MergeTree()
        ORDER BY name

结果

Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 88 ('default') (line 3, col 26): default 10,
            name String
            
        ) ENGINE = MergeTree()
        ORDER BY name. Expected one of: CODEC, TTL, ClosingRoundBracket, Comma, COMMENT, token (version 21.8.10.19 (official build))

documentation 说: NULL is the default value for any Nullable type, unless specified otherwise in the ClickHouse server configuration.

我想我必须在这个page 上找到正确的设置,否则我误解了默认值和 Nullable 类型之间的关系......

【问题讨论】:

【参考方案1】:

ClickHouse 有一个特殊的语法Nullable( <type> ) --> age Nullable(Int)

create table mytable
        (
            age Nullable(Int) default 10,
            name String
            
        ) ENGINE = MergeTree()
        ORDER BY name

【讨论】:

谢谢你这有正确的行为。我以为Nullable(Int)Int NULL是一样的...

以上是关于在 clickhouse 中创建表时如何将自定义默认值添加到 Nullable 类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得在Oracle中创建表时使用的查询?

在Oracle 11g 中创建表时如何保存表?

在 PostgreSQL 中创建表时向列添加注释?

在配置单元中创建表时向列添加默认值

当我们从 s3 中的 csv 文件读取数据并在 aws athena 中创建表时如何跳过标题。

在mysql集群中创建表时出错