Netezza SQL字符转整数:处理空值及带逗号数值的SQL方案
字符型含逗号和空值转整数插入的SQL解决方案
针对你的场景,需要同时处理千分位逗号和空白值的转换,以下是可行的SQL语句:
方案1:允许目标列存NULL(空白值转NULL)
如果TABLE_B的Column_A允许存储NULL,用这个语句:
INSERT INTO TABLE_B (Column_A) SELECT CAST(REPLACE(NULLIF(TRIM(Column_A), ''), ',', '') AS INTEGER) FROM TABLE_A;
各部分作用:
TRIM(Column_A):去除值前后的空格,避免把空格当成有效内容NULLIF(..., ''):把去除空格后为空字符串的值转为NULL,NULL转Integer不会报错REPLACE(..., ',', ''):移除数字中的千分位逗号,将'1,123'转为'1123'- 最后通过
CAST转为Integer类型
方案2:目标列不允许存NULL(空白值转默认值)
如果TABLE_B的Column_A是NOT NULL约束,需要给空白值指定默认值(比如0),可以用:
INSERT INTO TABLE_B (Column_A) SELECT CAST(COALESCE(REPLACE(NULLIF(TRIM(Column_A), ''), ',', ''), '0') AS INTEGER) FROM TABLE_A;
这里用COALESCE把转换后得到的NULL替换成'0',再转为Integer,确保插入的值都符合非空要求。
内容的提问来源于stack exchange,提问作者ImSahil
相关产品推荐
相关产品推荐

