列类型在postgresql中自动转换为boolean using case语句

时间:2017-01-18 05:43:05

标签: postgresql

我需要将所有'1'替换为是,将'0'替换为否。我写的查询是:

second_tranche_inspection_reporting_questionnaire.is_there_a_sill_band = case
   when second_tranche_inspection_reporting_questionnaire.is_there_a_sill_band = '1' then 'YES'
   when second_tranche_inspection_reporting_questionnaire.is_there_a_sill_band = '0' then 'NO'
   end as is_there_a_sill_band,

其中'second_tranche_inspection_reporting_questionnaire'是我的表名,'is_there_a_sill_band'是我的列名'text'。没有任何错误。但问题是使用它将列类型转换为布尔值,我得到的结果是'f',无论它是'0'还是'1'。请帮忙。我正在使用postgresql 9.4和pg admin III。

1 个答案:

答案 0 :(得分:1)

您正在查看is_there_still_a_band的当前值与新值之间的比较结果,该值始终为false。

选择应如下所示:

SELECT
  CASE
    WHEN is_there_a_sill_band = '1' THEN 'YES'
    WHEN is_there_a_sill_band = '0' THEN 'NO'
  END AS is_there_a_sill_band
FROM second_tranche_inspection_reporting_questionnaire;

您的选择与上述内容相同,但进行了无关的比较,总是评估为false

SELECT
  is_there_a_sill_band =
  CASE
    WHEN is_there_a_sill_band = '1' THEN 'YES'
    WHEN is_there_a_sill_band = '0' THEN 'NO'
  END AS is_there_a_sill_band
FROM second_tranche_inspection_reporting_questionnaire;

例如,如果当前值为1,则case语句的计算结果为YES。您正在选择'1' = 'YES' AS is_there_a_sill_band'1' = 'YES'是一个布尔语句,其值为false