2016-06-10 11 views
1

umschreiben oder umwandeln Kann mir jemand mit dem Fehler helfen?Spalte ist vom Typ Boolean aber Ausdruck ist vom Typ Text Hinweis: Sie müssen den Ausdruck

Update table 
SET 
tentative = case src.tentative 
WHEN 1 THEN 't' ELSE 'f' END 
FROM table 
+1

was ist Ihre genaue Frage? – Hamms

+0

Ich versuche eine Spalte zu aktualisieren. Tentativ ist vom booleschen Typ, aber auf der Quellseite ist es varchar. Ich bekomme dieses Problem beim Casting. – Ramesh

+0

Sie scheinen zu versuchen, von einem Booleschen zu einem Charakter zu wechseln ... wollen Sie vielleicht "WANN" t "DANN 1 ELS 0 ENDE"? – Hamms

Antwort

3

Ihre Spalte tentative ist ein BOOLEAN Typ; Sie versuchen jedoch, es mit einem TEXT-Wert zu aktualisieren.

Alles, was Sie tun müssen, ist, wie so BOOLEAN in Ihrem Update verwenden:

UPDATE table 
SET tentative = CASE src.tentative WHEN 1 THEN TRUE ELSE FALSE END 
FROM src_table src; 

Alternativ, aber vielleicht weniger offensichtlich Sie können dies tun:

UPDATE table 
SET tentative = (src.tentative = 1) 
FROM src_table src; 
+0

't' und 'f' sind gültige Literale von TRUE und FALSE –