如何将varchar转换为bool postgresql

时间:2017-09-19 07:25:30

标签: postgresql casting boolean varchar

我需要从一个表中读取值作为varchar,并将其作为boolean写入另一个表中。因此,除“False”之外的任何标签(文本)都被视为“True”。但我也想要转换(演员) - :: bool。 我有例子:

case when COALESCE(NULLIF('#(OG)', '')::bool, false) = FALSE then FALSE else TRUE end

但它给出了错误,因为在我的表中我没有完美的数据,例如:f,false,n,no,off,0和t,true,y,yes,on,1,还有简单的文本 - 123

invalid input syntax for type boolean: "123"

我使用EXEL文件,我在file.manifest中做的所有事情:

<?xml version="1.0" encoding="utf-8"?>
<Manifest>
<File startRow="2" table="td_actualpayments">
    <add isSql="false" key="OG" cell="G" header="Contractor OG" />
    <add isSql="true" key="ContractorIsGroupSociety" dataType="subquery" query="(case when COALESCE(NULLIF('#(OG)', '')::bool, false) = FALSE then FALSE else TRUE end)" />
  </File>
<PostUpdate>

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式,例如

NOT COALESCE(textcol, '') ~* E'^((f(a(l(se?)?)?)?)|(off?)|(no?)|0?)$'

对于NULL,空字符串和FALSE的每个有效字符串表示应该返回FALSE,并且它应该为所有其他字符串返回TRUE