Funktionen für Sequenzen (Generatoren)
CHAR_TO_UUID()
DSQL, PSQL
BINARY(16)
CHAR_TO_UUID (ascii_uuid)
Parameter | Beschreibung |
---|---|
ascii_uuid |
Eine 36-stellige Darstellung der UUID.‘ |
Konvertiert eine für Menschen lesbare 36-stellige UUID-Zeichenfolge in die entsprechende 16-Byte-UUID.
CHAR_TO_UUID
-Beispieleselect char_to_uuid('A0bF4E45-3029-2a44-D493-4998c9b439A3') from rdb$database
-- Ergebnis A0BF4E4530292A44D4934998C9B439A3 (16-Byte String)
select char_to_uuid('A0bF4E45-3029-2A44-X493-4998c9b439A3') from rdb$database
-- Fehler: - Menschlich lesbares UUID-Argument für CHAR_TO_UUID
muss eine Hex-Ziffer an Position 20 anstelle von "X (ASCII 88)" haben
GEN_UUID()
DSQL, PSQL
BINARY(16)
GEN_UUID ()
Gibt eine universell eindeutige ID als 16-Byte-Zeichenfolge zurück.
GEN_UUID
-Beispielselect gen_uuid() from rdb$database
-- Ergebnis e.g. 017347BFE212B2479C00FA4323B36320 (16-Byte String)
UUID_TO_CHAR()
DSQL, PSQL
CHAR(36)
UUID_TO_CHAR (uuid)
Parameter | Beschreibung |
---|---|
uuid |
16-Byte UUID |
Konvertiert eine 16-Byte-UUID in ihre 36-stellige, für Menschen lesbare ASCII-Darstellung.
UUID_TO_CHAR
-Beispieleselect uuid_to_char(x'876C45F4569B320DBCB4735AC3509E5F') from rdb$database
-- Ergebnis '876C45F4-569B-320D-BCB4-735AC3509E5F'
select uuid_to_char(gen_uuid()) from rdb$database
-- Ergebnis e.g. '680D946B-45FF-DB4E-B103-BB5711529B86'
select uuid_to_char('Firebird swings!') from rdb$database
-- Ergebnis '46697265-6269-7264-2073-77696E677321'
GEN_ID()
DSQL, ESQL, PSQL
BIGINT
— Dialect 2 und 3INTEGER
— Dialect 1
GEN_ID (generator-name, step)
Parameter | Beschreibung |
---|---|
generator-name |
Name eines vorhandenen Generators (Sequenz).Wenn er in doppelten Anführungszeichen mit einem Bezeichner definiert wurde, bei dem die Groß-/Kleinschreibung beachtet wird, muss er in derselben Form verwendet werden, es sei denn, der Name wird ausschließlich in Großbuchstaben geschrieben. |
step |
Ein ganzzahliger Ausdruck |
Erhöht einen Generator oder eine Sequenz und gibt den neuen Wert zurück.Wenn Schritt gleich 0 ist, lässt die Funktion den Wert des Generators unverändert und gibt seinen aktuellen Wert zurück.
Ab Firebird 2.0 wird die SQL-kompatible Syntax NEXT VALUE FOR
bevorzugt, außer wenn eine andere Erhöhung als 1 benötigt wird.
Warning
|
Wenn der Wert des Schrittparameters kleiner als Null ist, wird der Wert des Generators verringert.Achtung! Bei solchen Manipulationen in der Datenbank sollten Sie äußerst vorsichtig sein, da sie die Datenintegrität beeinträchtigen könnten. |
Note
|
In Dialekt 1 ist der Ergebnistyp |
GEN_ID
-Beispielnew.rec_id = gen_id(gen_recnum, 1);
COALESCE()
DSQL, PSQL
Abhängig von der Eingabe
COALESCE (<exp1>, <exp2> [, <expN> ... ])
Parameter | Beschreibung |
---|---|
exp1, exp2 … expN |
Eine Liste von Ausdrücken aller kompatiblen Typen |
Die Funktion COALESCE
nimmt zwei oder mehr Argumente und gibt den Wert des ersten Nicht-NULL
-Arguments zurück.Wenn alle Argumente NULL
ergeben, ist das Ergebnis NULL
.
COALESCE
-BeispieleDieses Beispiel wählt den Nickname
aus der Persons
-Tabelle.Wenn es NULL
ist, geht es weiter zu FirstName
.Ist auch dieser NULL
, wird “'Mr./Mrs.'
” verwendet.Schließlich fügt es den Familiennamen hinzu.Insgesamt wird versucht, aus den verfügbaren Daten einen möglichst informellen vollständigen Namen zusammenzustellen.Beachten Sie, dass dieses Schema nur funktioniert, wenn fehlende Spitznamen und Vornamen wirklich NULL
sind: Wenn einer von ihnen stattdessen ein leerer String ist, wird COALESCE
diesen glücklich an den Aufrufer zurückgeben.
select
coalesce (Nickname, FirstName, 'Mr./Mrs.') || ' ' || LastName
as FullName
from Persons
DECODE()
DSQL, PSQL
Abhängig von der Eingabe
DECODE(<testexpr>, <expr1>, <result1> [<expr2>, <result2> …] [, <defaultresult>])
Das äquivalente CASE
-Konstrukt:
CASE <testexpr> WHEN <expr1> THEN <result1> [WHEN <expr2> THEN <result2> …] [ELSE <defaultresult>] END
Parameter | Beschreibung |
---|---|
testexpr |
Ein Ausdruck eines beliebigen kompatiblen Typs, der mit den Ausdrücken expr1, expr2 … exprN . verglichen wird |
expr1, expr2, … exprN |
Ausdrücke beliebiger kompatibler Typen, mit denen der Ausdruck testexpr verglichen wird |
result1, result2, … resultN |
Rückgabewerte jeglichen Typs |
defaultresult |
Der Ausdruck, der zurückgegeben werden soll, wenn keine der Bedingungen erfüllt ist |
DECODE
ist eine Abkürzung für das sogenannte “Einfaches CASE
”-Konstrukt, in dem ein gegebener Ausdruck mit einer Anzahl von andere Ausdrücke, bis eine Übereinstimmung gefunden wird.Das Ergebnis wird durch den Wert bestimmt, der nach dem übereinstimmenden Ausdruck aufgeführt ist.Wenn keine Übereinstimmung gefunden wird, wird das Standardergebnis zurückgegeben, falls vorhanden.Andernfalls wird NULL
zurückgegeben.
Caution
|
Der Abgleich erfolgt mit dem Operator ‘ |
DECODE
-Beispieleselect name,
age,
decode(upper(sex),
'M', 'Male',
'F', 'Female',
'Unknown'),
religion
from people
IIF()
DSQL, PSQL
Abhängig von der Eingabe
IIF (<condition>, ResultT, ResultF)
Parameter | Beschreibung |
---|---|
condition |
Ein wahrer|falscher Ausdruck |
resultT |
Der zurückgegebene Wert, wenn die Bedingung wahr ist |
resultF |
Der zurückgegebene Wert, wenn die Bedingung falsch ist |
IIF
benötigt drei Argumente.Wenn das erste Argument true
ergibt, wird das zweite Argument zurückgegeben;andernfalls wird die dritte zurückgegeben.
IIF
könnte in C-ähnlichen Sprachen mit dem ternären Operator “?:
” verglichen werden.
Note
|
|
IIF
-Beispieleselect iif( sex = 'M', 'Sir', 'Madam' ) from Customers
MAXVALUE()
DSQL, PSQL
Variiert je nach Eingabe — das Ergebnis hat denselben Datentyp wie der erste Ausdruck in der Liste (expr1).
MAXVALUE (<expr1> [, ... , <exprN> ])
Parameter | Beschreibung |
---|---|
expr1 … exprN |
Liste der Ausdrücke kompatibler Typen |
Gibt den Höchstwert aus einer Liste von numerischen, Zeichenfolgen- oder Datums-/Uhrzeitausdrücken zurück.Diese Funktion unterstützt vollständig Text-BLOB
s jeder Länge und jedes beliebigen Zeichensatzes.
Wenn ein oder mehrere Ausdrücke in NULL
aufgelöst werden, gibt MAXVALUE
NULL
zurück.Dieses Verhalten unterscheidet sich von der Aggregatfunktion MAX
.
MAXVALUE
-BeispieleSELECT MAXVALUE(PRICE_1, PRICE_2) AS PRICE
FROM PRICELIST
MINVALUE()
DSQL, PSQL
Variiert je nach Eingabe — das Ergebnis hat denselben Datentyp wie der erste Ausdruck in der Liste (expr1).
MINVALUE (<expr1> [, ... , <exprN> ])
Parameter | Beschreibung |
---|---|
expr1 … exprN |
Liste der Ausdrücke kompatibler Typen |
Gibt den Mindestwert aus einer Liste von numerischen, Zeichenfolgen- oder Datums-/Uhrzeitausdrücken zurück.Diese Funktion unterstützt vollständig Text-BLOB
s jeder Länge und jedes beliebigen Zeichensatzes.
Wenn ein oder mehrere Ausdrücke in NULL
aufgelöst werden, gibt MINVALUE
NULL
zurück.Dieses Verhalten unterscheidet sich von der Aggregatfunktion MIN
.
MINVALUE
-BeispieleSELECT MINVALUE(PRICE_1, PRICE_2) AS PRICE
FROM PRICELIST
NULLIF()
DSQL, PSQL
Abhängig von der Eingabe
NULLIF (<exp1>, <exp2>)
Parameter | Beschreibung |
---|---|
exp1 |
Ein Ausdruck |
exp2 |
Ein anderer Ausdruck eines Datentyps, der mit exp1 kompatibel ist |
NULLIF
gibt den Wert des ersten Arguments zurück, es sei denn, es ist gleich dem zweiten.In diesem Fall wird NULL
zurückgegeben.
NULLIF
-Beispielselect avg( nullif(Weight, -1) ) from FatPeople
Dadurch wird das durchschnittliche Gewicht der in FatPeople aufgelisteten Personen zurückgegeben, mit Ausnahme derer mit einem Gewicht von -1, da "AVG" "NULL"-Daten überspringt.Vermutlich bedeutet -1 in dieser Tabelle “Gewicht unbekannt”.Ein einfaches AVG(Weight)
würde die -1 Gewichte enthalten, wodurch das Ergebnis verzerrt wird.