You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中基于另一表创建表时筛选数值类型列失效问题

问题分析与解决方案

你遇到的问题根源是对IS_DECIMAL()函数的作用理解有误:

  • IS_DECIMAL(col2) 并非判断col2字段本身的数据类型是否为数值型,而是判断输入的字符串内容是否可以被解析为十进制数值。比如字符串'123.45'会返回1,但它本身还是字符串类型,所以会被保留到新表中。

针对你的需求,分两种场景给出解决方法:

场景1:col2是VARCHAR类型(存储文本内容,包含数值格式字符串和纯字符串)

使用TRY_CAST()函数尝试将字段转换为数值类型,转换失败会返回NULL,以此过滤掉无法转为数值的纯字符串:

CREATE TABLE abc1 AS
SELECT * FROM abc
WHERE TRY_CAST(col2 AS NUMBER) IS NOT NULL;

场景2:col2是VARIANT类型(混合存储数值、字符串等多种数据类型)

通过TYPEOF()函数直接判断字段存储的实际数据类型,只保留数值/浮点类型的行:

CREATE TABLE abc1 AS
SELECT * FROM abc
WHERE TYPEOF(col2) IN ('NUMBER', 'FLOAT');

内容的提问来源于stack exchange,提问作者SheCodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:27:36