Postgresql 如何将varchar转换为boolean
我有一个变量“x”,它在staging表中是varchar,但在目标表中设置为boolean,它有“true”和“false”值。如何在postgresql中将varchar转换为布尔值?如果varchar列包含(不区分大小写):Postgresql 如何将varchar转换为boolean,postgresql,postgresql-9.3,postgresql-9.2,postgresql-9.4,Postgresql,Postgresql 9.3,Postgresql 9.2,Postgresql 9.4,我有一个变量“x”,它在staging表中是varchar,但在目标表中设置为boolean,它有“true”和“false”值。如何在postgresql中将varchar转换为布尔值?如果varchar列包含(不区分大小写): t,true,y,yes,on,1 f,false,n,no,off,0 您可以简单地将其转换为布尔值,例如: select 'true'::boolean, 'false'::boolean; bool | bool ------+------ t
,t
,true
,y
,yes
,on
1
,f
,false
,n
,no
,off
0
select 'true'::boolean, 'false'::boolean;
bool | bool
------+------
t | f
(1 row)
请参阅。,了解旧的PostgreSQL版本和红移转换将不起作用,但以下操作确实起作用:
SELECT boolin(textout('true'::varchar)), boolin(textout('false'::varchar));
另请参见上的讨论。对于红移,我最幸运的是:
SELECT DECODE(column_name,
'false', '0',
'true', '1'
)::integer::boolean from table_name;
这只是将varchar字符串映射到'0'
或'1'
,然后红移可以首先转换为整数,最后转换为布尔值
这种方法的一个很大的优点是,它可以扩展为包含您希望映射的任何其他字符串。i、 e:
SELECT DECODE(column_name,
'false', '0',
'no', '0',
'true', '1',
'yes', '1'
)::integer::boolean from table_name;
您可以阅读更多有关解码方法的信息 如果您可以假设除
true
之外的任何内容都是false
,那么您可以使用:
select
column_name = 'true' column_name_as_bool
from
table_name;
是否要插入,请选择“更新”?或者什么?我想更新这不是真的,请参见
选择'true'::varchar::boolean,'false'::varchar::boolean代码>它有什么问题??嗯,很有趣。我发誓我在新的PostgreSQL中也看到了一个错误,但这似乎只是红移和旧的PostgreSQL版本中的一个问题代码>:无效操作:无法将类型字符转换为布尔值;我似乎不需要中间的::INTEGER::
强制转换<代码>选择解码(列名称,'N','0','Y','1')::表名称中的布尔值代码>在红移中对我来说很好。