SQL - Informix - Ändern der Datentyp einer Spalte von numerisch Zeichen
Frage
Ich habe eine temporäre Tabelle, die numerische ganzzahlige Werte in einer Spalte hat. Ich möchte entweder die Integer-Werte mit Zeichenwerte ersetzen, basierend auf einigen Kriterien oder ich möchte eine andere Spalte der Zeichentyp hinzufügen, die automatisch Werte in sich selbst fügt basierend auf einige Kriterien.
Wenn x <= 1, wechseln Sie in "SP" oder eine neue Spalte und speichern "SP" machen in dieser Zeile
Wenn x> 1, umsteigen in die „FA“ oder eine neue Spalte zu machen und zu speichern „FA“ in dieser Zeile
Auch ändern Befehle nicht auf temporäre Tabellen in meiner Version von Informix erlaubt sind.
Lösung
Andere Tipps
Sie haben recht, man kann nicht eine temporäre Tabelle ändern. Hinzufügen eine zusätzliche Spalte mit diesem abgeleiteten Wert kann mit einer CASE
Aussage gemacht werden, das heißt:
SELECT enroll.ud, enroll.yr, (CASE
WHEN enrollsess.yr_offset <=1 THEN "FA"
ELSE "SP" END)::CHAR(2) AS sess, ...
Die Casting (dh die Klammern und ::CHAR(2)
) sind wahrscheinlich nicht erforderlich.
Wenn die Logik kann als Null / Nicht-Null ausgedrückt werden (es ist in Ihrem Beispiel nicht klar, ob yr_offset negativ sein kann), dann ist es noch einfacher:
SELECT enroll.id, enroll.yr,
DECODE(enrollsess.yr_offset, 0, "FA", "SP")::CHAR(2) AS sess, ...