Snowflake虚拟列能否自动分配数据类型?对比MS SQL计算列
Snowflake虚拟列是否支持自动推断数据类型?
问题背景
在MS SQL中添加计算列时,无需手动指定数据类型,系统会自动完成类型推断。但在Snowflake中创建虚拟列时,似乎必须显式指定数据类型,例如执行如下语句:
ALTER TABLE ABC ADD COLUMN MyVirtualCol NVARCHAR AS (col1 + 1)
当col1为数值类型时,该语句会执行失败,Snowflake会提示类型不匹配,同时错误消息里会给出建议的数据类型,这让人猜测是否存在自动分配类型的可能。
回答
目前Snowflake不支持自动推断虚拟列的数据类型,创建虚拟列时必须显式指定与计算表达式结果匹配的数据类型。
- 若省略数据类型直接创建虚拟列,比如执行:
会直接触发报错,提示必须指定数据类型。ALTER TABLE ABC ADD COLUMN MyVirtualCol AS (col1 + 1) - 错误消息中给出的建议数据类型,是Snowflake根据表达式计算结果推导得出的,但它不会自动帮你填充该类型,需要你手动修改语句中的数据类型定义部分。
举个正确的示例:如果col1是INT类型,col1 + 1的结果也为INT,那么正确的创建语句应为:
ALTER TABLE ABC ADD COLUMN MyVirtualCol INT AS (col1 + 1)
内容的提问来源于stack exchange,提问作者Slicc
相关产品推荐
相关产品推荐

