我有一个变量' x'这是staging表中的varchar,但在目标表中设置为boolean,其中包含' true'并且' false'值。如何在postgresql中将varchar转换为boolean?
答案 0 :(得分:8)
如果varchar列包含one of the strings(不区分大小写):
t
,true
,y
,yes
,on
,1
f
,false
,n
,no
,off
,0
你可以简单地将它转换为布尔值,例如:
select 'true'::boolean, 'false'::boolean;
bool | bool
------+------
t | f
(1 row)
请参阅SQLFiddle。
答案 1 :(得分:4)
对于Redshift,我有以下最好的运气:
// there is no method like getElementByInnerHtml so I don't know what to do
var anc = document.getElementByInnerHtml('Select All');
anc.click();
这只是将varchar字符串映射到SELECT DECODE(column_name,
'false', '0',
'true', '1'
)::integer::boolean from table_name;
或'0'
,然后Redshift可以先将其转换为整数,最后再转换为布尔值。
这种方法的一大优势是它可以扩展为包含您想要映射的任何其他字符串。即:
'1'
您可以阅读有关DECODE方法here的更多信息。
答案 2 :(得分:1)
对于旧的PostgreSQL版本和Redshift版本不起作用,但以下是:
SELECT boolin(textout('true'::varchar)), boolin(textout('false'::varchar));
请参阅SQLFiddle,另请参阅PostgreSQL list上的讨论。
答案 3 :(得分:0)
如果您可以假设true
以外的任何内容都是false
,则可以使用:
select
column_name = 'true' column_name_as_bool
from
table_name;