Amazon Redshift源表布尔型字段转varchar存入目标表问题咨询
Amazon Redshift布尔类型转VARCHAR解决方案
Redshift默认不支持布尔类型直接CAST为VARCHAR,可通过以下两种方案间接完成转换:
- 方案1:使用CASE语句显式映射布尔值(支持自定义映射内容)
适用场景:需要自定义布尔值对应的字符串内容,比如true对应'是'、false对应'否',或者标准的'true'/'false'
示例代码:CREATE TABLE target AS SELECT -- 非布尔字段正常罗列即可,请勿使用SELECT * col1, col2, CASE WHEN indicator = true THEN 'true' ELSE 'false' END::varchar AS indicator, col3, col4 FROM source; - 方案2:通过text类型中转转换
适用场景:不需要自定义映射,直接保留Redshift布尔值默认的t/f字符标识
示例代码:CREATE TABLE target AS SELECT col1, col2, indicator::text::varchar AS indicator, col3 FROM source;
注意事项
- 必须显式罗列所有查询字段,不能使用
SELECT *写法,否则会直接复用源表的布尔字段类型,导致转换不生效 - 两种方案都可以规避
42804类型不匹配报错,可根据实际业务需求选择
内容的提问来源于stack exchange,提问作者Saba Malik
相关产品推荐
相关产品推荐

