postgresql - 如何将 varchar 转换为 bool postgresql

标签 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>

最佳答案

你可以使用正则表达式,比如

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

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

关于postgresql - 如何将 varchar 转换为 bool postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46294397/

相关文章:

sql - 获取参与对话的用户列表

PostgreSQL 9.5 : comma separated string using string_agg()

sql - 使用 SQL-Server 中的格式将 nvarchar 转换为日期

java - 如何检查停用词文件是否损坏或错误

sql - Postgres 查询以获取两个日期之间的结果

sql - LIKE 匹配以数字结尾的字符串

c# - 如何处理动态表名

c - 从 C 中的 *char[] 变量获取第一个字符

ios - 更改 nsdictionary 中的 bool 值时的 EXC_BAD_ACCESS

java - 存储 boolean 值