MySQL View
Gunther
- datenbank
1 ChrisB
Hallo werte Selfgemeinde!
Ich möchte in einen View ein Feld 'Snhemi' einfügen vom Typ VARCHAR(1) dessen Inhalt (N oder S) abhängig davon ist, ob der Wert im Feld 'lat' vom Typ DOUBLE positiv oder negativ ist.
Es wäre sehr nett, wenn mir hier jemand einen Tipp geben könnte, wie ich das anstellen muss - danke!
Allen noch ein schönes Wochenende.
Gruß Gunther
Hi,
Ich möchte in einen View ein Feld 'Snhemi' einfügen vom Typ VARCHAR(1) dessen Inhalt (N oder S) abhängig davon ist, ob der Wert im Feld 'lat' vom Typ DOUBLE positiv oder negativ ist.
Es wäre sehr nett, wenn mir hier jemand einen Tipp geben könnte, wie ich das anstellen muss
Mit einem simplen IF in der Deklaration der Spalte ...?
MfG ChrisB
Hi,
Mit einem simplen IF in der Deklaration der Spalte ...?
OK, inzwischen haben sich die Umstände leicht verändert.
Folgendes verwende ich jetzt:
...
(psw.latitude / ABS(psw.latitude)) AS Snhemi
Das Feld 'latitude' ist vom Typ DOUBLE und hat den Standardwert NULL.
Durch die Verwendung meiner obigen Zeile erhalte ich als Ergebnis entweder '1' oder '-1' (was N oder S entspricht).
Nun würde ich gerne noch den Feldtyp anpassen und dabei den Standardwert NULL beibehalten.
Ich tue mich etwas schwer damit, die passenden Stellen im MySQL Handbuch zu finden. Deshalb wäre ein Link oder (ausnahmsweise) mal direkt die passende Syntax sehr hilfreich.
Besten Dank,
Gruß Gunther
Hi,
Update 1:
Mit einem simplen IF in der Deklaration der Spalte ...?
OK, inzwischen haben sich die Umstände leicht verändert.
Folgendes verwende ich jetzt:
...
(psw.latitude / ABS(psw.latitude)) AS SnhemiDas Feld 'latitude' ist vom Typ DOUBLE und hat den Standardwert NULL.
Durch die Verwendung meiner obigen Zeile erhalte ich als Ergebnis entweder '1' oder '-1' (was N oder S entspricht).
Ich verwende jetzt:
...
IF(psw.latitude, psw.latitude / ABS(psw.latitude), NULL) AS Snhemi
Bleibt der Punkt:
Nun würde ich gerne noch den Feldtyp anpassen und dabei den Standardwert NULL beibehalten.
Ich tue mich etwas schwer damit, die passenden Stellen im MySQL Handbuch zu finden. Deshalb wäre ein Link oder (ausnahmsweise) mal direkt die passende Syntax sehr hilfreich.
Neuer Feldtyp sollte TINYINT(1) signed sein.
Ich vermute mal, dass ich ALTER verwenden muss/ kann. Bleibt die Frage nach der korrekten Syntax und an welcher Stelle?
Gruß Gunther
Hi,
Neuer Feldtyp sollte TINYINT(1) signed sein.
Warum interessiert dich bei einer reinen VIEW der Feldtyp so sehr?
Ich vermute mal, dass ich ALTER verwenden muss/ kann.
Da kannst du, ebenso wenig wie beim CREATE VIEW, explizit „Spaltentypen“ angeben.
Bleibt die Frage nach der korrekten Syntax und an welcher Stelle?
Allerhöchstens ein CAST im VIEW kann ich mir spontan vorstellen, um einen speziellen Datentyp zu forcieren.
Die Erklärung, warum dafür überhaupt eine Notwendigkeit gegeben sein sollte, interessiert mich aber nach wie vor.
MfG ChrisB
Hi,
Warum interessiert dich bei einer reinen VIEW der Feldtyp so sehr?
Gute Frage - nächste Frage.
Irgendwie liegt das wohl u.a. daran, dass einer der Grundsätze meiner bescheidenen MySQL Kenntnisse ist, immer den passendsten Feldtyp zu verwenden. Da ich bisher noch nie mit Views zutun hatte, habe ich diesen Grundsatz wohl einfach übertragen.
Allerhöchstens ein CAST im VIEW kann ich mir spontan vorstellen, um einen speziellen Datentyp zu forcieren.
Die Erklärung, warum dafür überhaupt eine Notwendigkeit gegeben sein sollte, interessiert mich aber nach wie vor.
OK, da aufgrund der Art und Weise wie der View erzeugt wird eigentlich schon sichergestellt ist, dass das Feld nur 1 oder -1 als Wert enthalten kann oder ansonsten gleich NULL ist, gibt es keine Notwendigkeit dafür.
Denn an anderer Stelle wird der Wert wieder für Berechnungen verwendet.
Also besten Dank noch mal für den Tipp mit dem IF.
Gruß Gunther