Seite 1 von 1

Firebird 6

Verfasst: Mo 2. Feb 2026, 18:18
von jhoehne
Moin!

Ich spiele grad so ein bisschen rum mit der FB6 Alpha.

FB6 wird Schemata können, Local Temporary Tables, CAST() auf Datumswerte mit einem Format-String (beide Richtungen), die ANY_VALUE Aggregatfunktion, standardkonformes LISTAGG anstelle von LIST() und noch einiges mehr.

Interessant finde ich z.B. die "UNLIST" Funktion, mit der eine Liste a la "1,2,3,4" als Tabelle angesprochen werden kann, wobei man die Werte dann noch casten kann (z.B. Strings auf Integer):

Code: Alles auswählen

SELECT SUM(x) FROM UNLIST('1,2,3,4' RETURNING INTEGER) AS u(x)
gibt 10. Man kann den Trenner auch mit angeben.

Die Funktion "GENERATE_SERIES" gibt eine einspaltige Tabelle mit Zahlenwerten zurück. Als Parameter übergibt man Start- und Zielwert und den Increment (default 1). Alle Werte können auch Fließkommazahlen sein.

Code: Alles auswählen

SELECT x FROM GENERATE_SERIES(1,3,0.5) AS u(x)
gibt 1.0, 1.5, 2.0, 2.5 und 3.0 als Werte für x zurück.

Fun fact: wir machen "4,3,2,1' aus '1,2,3,4':

Code: Alles auswählen

SELECT LISTAGG (ALL TRIM(u.x), ',') WITHIN GROUP (ORDER BY x DESC)
FROM UNLIST('1,2,3,4') AS u(x);
P.S.: für "Unlist" & Co. habe ich (und wahrscheinlich ihr auch...) natürlich eigene Funktionen definiert. Man braucht das ja ab und an.

Re: Firebird 6

Verfasst: Di 3. Feb 2026, 15:33
von martin.koeditz
Da sind schon einige nützliche Features bei.

Bin jedenfalls in freudiger Erwartung. :D

Re: Firebird 6

Verfasst: Di 3. Feb 2026, 17:46
von bfuerchau
" in freudiger Erwartung." => Wirst du Vater?

Soviel wieder zu SQL-Standard:
SQL-Server: STRING_SPLIT
DB2 for i: SPLIT

Re: Firebird 6

Verfasst: Mi 4. Feb 2026, 13:22
von martin.koeditz
bfuerchau hat geschrieben: Di 3. Feb 2026, 17:46 " in freudiger Erwartung." => Wirst du Vater?
Es wird ein Feuervogel :D

Re: Firebird 6

Verfasst: Mi 4. Feb 2026, 16:47
von jhoehne
bfuerchau hat geschrieben: Di 3. Feb 2026, 17:46 Soviel wieder zu SQL-Standard:
Gilt doch auch für den umgekehrten Weg:

LIST() in FB, heißt GROUP_CONCAT in MySQL und ADS, STRING_AGG in SQL Server und PostgreSQL, und wird zu LISTAGG in FB6.

Re: Firebird 6

Verfasst: Do 5. Feb 2026, 11:48
von bfuerchau
SQL-Server war schon immer sehr eigen.
Bei DB2 heißt es auch LISTAGG.
Nette Seite:
https://modern-sql.com/de/feature/listagg

Re: Firebird 6

Verfasst: Do 5. Feb 2026, 17:56
von jhoehne
In der FB6 Doku heißt es "ON OVERFLOW" ignorieren sie, denn das Ergebnis von LISTAGG ist wie bei LIST ein TEXT BLOB. Da läuft nichts über.

Re: Firebird 6

Verfasst: Do 5. Feb 2026, 18:39
von bfuerchau
Bist du da sicher? Was ist, wenn der BLOB größer 4GB würde?
Ist die Grenze u.U. auf 2TB vergrößert wordenn?
Immerhin könnte man ein LISTAGG auch auf BLOB's anwenden. ;)

Re: Firebird 6

Verfasst: Fr 6. Feb 2026, 19:47
von martin.koeditz
Gibt es eigentlich irgendwo ein öffentlich zugängliches Dokument zum SQL-Standard?

Re: Firebird 6

Verfasst: Mo 9. Feb 2026, 09:44
von bfuerchau