首页 > 解决方案 > 使用 CASE 表达式时如何解决此查询中的错误?

问题描述

首先我得到一个错误,因为零是一个整数,它不能与字符串进行比较,其次,当我更正使用 varchar 时我得到一个错误

case when ECO.AlteratoRilasciamentoVentricolare = 0
          then '0=No'
     else '1=Si' end as VentricoloSinistro_AlteratoRilasciamentoVentricolare,
case when ECO.PatternMitralicoPseudonormaleReversibileVentricoloSinistro = 0 
          then '0=No'
     else '1=Si' end as VentricoloSinistro_PatternMitralicoPseudonormaleReversibile,
case when ECO.PatternMitralicoPseudonormaleIrreversibileVentricoloSinistro = 0
          then '0=No'
     else '1=Si' end as VentricoloSinistro_PatternMitralicoPseudonormaleIrreversibile,
case when ECO.PatternRestrittivoVentricoloSinistro = 0
          then '0=No'
     else '1=Si' end as VentricoloSinistro_PatternRestrittivo,
(SELECT cast(IDInterventovalore as varchar(5)) || '=' || valore  
FROM cch.pats_cch_interventi_valori val 

标签: sqlpostgresqlcase-when

解决方案


case when ECO.AlteratoRilasciamentoVentricolare = 0::varchar
          then '0=No'
     else '1=Si' end as VentricoloSinistro_AlteratoRilasciamentoVentricolare,
case when ECO.PatternMitralicoPseudonormaleReversibileVentricoloSinistro = 0::varchar
          then '0=No'
     else '1=Si' end as VentricoloSinistro_PatternMitralicoPseudonormaleReversibile,
case when ECO.PatternMitralicoPseudonormaleIrreversibileVentricoloSinistro = 0::varchar
          then '0=No'
     else '1=Si' end as VentricoloSinistro_PatternMitralicoPseudonormaleIrreversibile,
case when ECO.PatternRestrittivoVentricoloSinistro = 0::varchar
          then '0=No'
     else '1=Si' end as VentricoloSinistro_PatternRestrittivo,
(SELECT cast(IDInterventovalore as varchar(5)) || '=' || valore  
FROM cch.pats_cch_interventi_valori val 

如上所述将您的数字转换为 varchar,或者简单地将 tic 放在它们周围,例如:“case when fubar='0'”。

您的一张表可能有一个 varchar 列而不是一个数字。如果您可以选择更新表结构,我建议您将表设置为数字。


推荐阅读