我需要将所有'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。
答案 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
。