Clickhouse Nullable列的转换处理 Nested type Array(String) cannot be inside Nullable type (version 19.5....

直接看解决方案请翻到最后一行

1.Nullable列

优点:允许Null值插入,在导数时对null值不需要额外处理
缺点,Nullable 列相比普通列需要额外的存储空间且对性能有一些影响,且一些函数splitByString对Nullable列是不支持的

2.转换处理

我们在建表时几乎每个列都加上了Nullable,这就导致了处理这些列遇见一些问题
例如names Nullable(String)字段,我想要按逗号切分这个names

select splitByString(',',names) from table

会报如下错误
DB::Exception: Nested type Array(String) cannot be inside Nullable type (version 19.5.3.1)
那么如何解决这个问题呢?当然是把Nullable(String)转换成String了
刚开始试一下了几种方法

  • toString(names)
  • substring(name,1,length(name)) + 别名
  • concat(names,'') + 别名
  • 组合查询
  • 子查询
    发现并没有什么 软 用

后来换成cast(names as String)成功解决问题

select splitByString(',',cast(names as String)) from table
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容