2017-01-18 4 views
0

Ich muss alle '1' durch Ja und '0' durch Nein ersetzen. Die Abfrage, die ich geschrieben habe, ist:Spalte Typ automatisch in Boolean mit Case-Anweisung in PostgreSQL

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, 

wo ‚second_tranche_inspection_reporting_questionnaire‘ mein Tisch ist Name und ‚is_there_a_sill_band‘ ist mein Spaltenname des Typs ‚text'.There ist kein Fehler. Aber das Problem ist, dass es den Spaltentyp als boolescher Wert konvertiert und das Ergebnis ist 'f', egal ob '0' oder '1'. Bitte helfen Sie. Ich benutze postgresql 9.4 und pg admin III.

+0

Wo ist der Rest Ihrer Update-Anweisung? – teppic

+0

Rest Teil Mittelwert- "wählen" und "von"? Es ist eine riesige Aussage, die perfekt funktioniert. Also habe ich nicht erwähnt. Das Problem besteht nur in diesem Teil. – pari

Antwort

1

Sie sehen das Ergebnis eines Vergleichs zwischen dem aktuellen Wert is_there_still_a_band und dem neuen Wert, der immer falsch ist.

Die select sollten wie folgt aussehen:

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; 

Ihre Auswahl entspricht die oben, jedoch mit einem Fremdvergleich, dass immer false auswertet:

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; 

Wenn zum Beispiel der aktuellen Wert ist 1, die Case-Anweisung wird YES ausgewertet. Sie wählen '1' = 'YES' AS is_there_a_sill_band. '1' = 'YES' ist eine boolesche Anweisung, die zu false ausgewertet wird.

+0

Ich habe nicht verstanden, was du zeigst? Sprichst du von '=' das ist vor dem Fall als 'second_trange_inspection_reporting_questionnaire.is_there_a_sill_band = case'? und Aktualisierungsabfrage bedeutet? Muss ich die Daten vor der Verwendung der Select-Anweisung aktualisieren? Wenn ja, das ist nicht mein Ziel. Ich brauche die Daten als Ja für 1, um mit der Abfrage anzuzeigen, ohne die Daten tatsächlich in der Datenbank zu aktualisieren. – pari

+0

Danke ... es hat funktioniert – pari

Verwandte Themen