如何在Redshift中将布尔值转为0和1?是否仅能用CASE语句?
在Redshift中将布尔值转换为0和1的几种方法
嘿,你提到的case when方法完全可行,而且是非常直观的实现方式,但Redshift里其实还有更简洁的替代方案,我给你整理一下:
CASE WHEN语句(你提到的方法)
这是最通用的写法,可读性拉满,哪怕是新手也能一眼看懂逻辑,还能灵活扩展(比如想把true转成其他数值也很方便)。示例代码:SELECT case when your_boolean_field then 1 else 0 end as boolean_to_int FROM your_table;如果需要处理NULL值,还可以补充判断逻辑:
SELECT case when your_boolean_field is true then 1 when your_boolean_field is false then 0 else 0 end as boolean_to_int FROM your_table;CAST函数转换
Redshift原生支持把布尔类型直接转换为整数,true会被转成1,false转成0,写法更简洁:SELECT CAST(your_boolean_field AS INTEGER) as boolean_to_int FROM your_table;要是遇到NULL值,转换后还是NULL,如果想把NULL也统一转成0,可以结合
COALESCE:SELECT COALESCE(CAST(your_boolean_field AS INTEGER), 0) as boolean_to_int FROM your_table;使用::类型转换简写
这是Redshift里类型转换的语法糖,和CAST效果完全一样,但写起来更短,适合追求代码简洁的场景:SELECT your_boolean_field::INTEGER as boolean_to_int FROM your_table;同样处理NULL的话:
SELECT COALESCE(your_boolean_field::INTEGER, 0) as boolean_to_int FROM your_table;
总结一下:如果需要复杂的条件逻辑,优先选CASE WHEN;如果只是单纯将布尔值转0和1,CAST或者::的写法更高效简洁。
内容的提问来源于stack exchange,提问作者Junyu Yang
相关产品推荐
相关产品推荐

