wobei sich "AS typ" und "::type" unterscheiden können.
nun finde ich "CAST" im Zusammenhang mit "SELECT " wo es scheinbar wie eine "Function" eingesetzt werden kann.
mit einem "CREATE CAST" kann ich es wohl ähnlich einer ""Function" für eine Table abspeichern.
Frage : was ist für mein Vorhaben mit "Typumwandlung" besser geeignet ?
schlucken die meisten Systeme ohne Probleme. Wo das nicht geht, kann über CAST eine explizite Umwandlung des Formates erzwungen werden (auf der obigen Seite z.B. ein FLOAT in ein INT).
Sinn macht es, wenn man es braucht. Selbst habe ich bisher wenig Fälle gefunden, bei denen ich so etwas benötigt hätte.
Zumindest in PostgreSQL definiert sich eine STORED FUNCTION nicht nur über ihren Namen und ihr Schema, sondern auch über die Art ihrer Parameter, da Funktionsüberladung möglich ist. Das heisst also, dass sich eine als xyz(param1 INTEGER) angelegte STORED FUNCTION von xyz('1') nicht angesprochen fühlt, wohl aber von xyz('1'::INTEGER).
In den meisten anderen Fällen rät die Datenbank, was hier wohl am sinnvollsten wäre, kann sie es nicht erraten, so gibt es eine Fehlermeldung - explizite CASTs beugen diesen Risiko ebenso wie dem einer Fehleinschätzung vor.
CASTs haben ihre Grenzen - dafür gibt es dann Funktionen wie TO_TEXT oder TO_DATE, wo man nicht nur den Ausgangs- und Zielwert definieren kann, sondern auch sagen kann, wie der Ausgangswert zu interpretieren ist (gerade bei TEXT <> DATE Umwandlungen ist das also idR ratsamer, als ein einfacher CAST).
Zu den beiden Funktionen:
SELECT CAST('1' AS INTEGER);
entspricht
SELECT '1'::INTEGER;