FirebirdSQL logo

BIN_SHL()

Verfügbar in

DSQL, PSQL

Ergebnistyp

BIGINT

Syntax
BIN_SHL (number, shift)
Table 1. BIN_SHL-Funktionsparameter
Parameter Beschreibung

number

Eine Zahl eines ganzzahligen Typs

shift

Die Anzahl der Bits, um die der Zahlenwert verschoben wird

Gibt das erste Argument bitweise linksverschoben um das zweite Argument zurück, d. h. a << b oder a·2b.

BIN_SHR()

Verfügbar in

DSQL, PSQL

Ergebnistyp

BIGINT

Syntax
BIN_SHR (number, shift)
Table 1. BIN_SHR-Funktionsparameter
Parameter Beschreibung

number

Eine Zahl eines ganzzahligen Typs

shift

Die Anzahl der Bits, um die der Zahlenwert verschoben wird

Gibt das erste Argument bitweise nach rechts verschoben um das zweite Argument zurück, d. h. a >> b oder a/2b.

  • Die ausgeführte Operation ist eine arithmetische Rechtsverschiebung (SAR), dh das Vorzeichen des ersten Operanden bleibt immer erhalten.

docnext count = 24

BIN_XOR()

Verfügbar in

DSQL, PSQL

Möglicher Namenskonflikt

YES → Details lesen

Ergebnistyp

SMALLINT, INTEGER oder BIGINT

Note

Das Ergebnis SMALLINT wird nur zurückgegeben, wenn alle Argumente explizit SMALLINTs oder NUMERIC(n, 0) mit n <= 4 sind;andernfalls geben kleine Ganzzahlen ein INTEGER-Ergebnis zurück.

Syntax
BIN_XOR (number, number [, number ...])
Table 1. BIN_XOR-Funktionsparameter
Parameter Beschreibung

number

Beliebige ganze Zahl (literal, smallint/integer/bigint, numerisch/dezimal mit Skalierung 0)

Gibt das Ergebnis der bitweisen XOR-Operation für die Argumente zurück.

UUID-Funktionen

CHAR_TO_UUID()

Verfügbar in

DSQL, PSQL

Ergebnistyp

BINARY(16)

Syntax
CHAR_TO_UUID (ascii_uuid)
Table 1. CHAR_TO_UUID-Funktionsparameter
Parameter Beschreibung

ascii_uuid

Eine 36-stellige Darstellung der UUID.‘-’ (Bindestrich) in den Positionen 9, 14, 19 und 24;gültige Hexadezimalziffern an beliebigen anderen Stellen, z.B. 'A0bF4E45-3029-2a44-D493-4998c9b439A3'

Konvertiert eine für Menschen lesbare 36-stellige UUID-Zeichenfolge in die entsprechende 16-Byte-UUID.

CHAR_TO_UUID-Beispiele

select 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()

Verfügbar in

DSQL, PSQL

Ergebnistyp

BINARY(16)

Syntax
GEN_UUID ()

Gibt eine universell eindeutige ID als 16-Byte-Zeichenfolge zurück.

GEN_UUID-Beispiel

select gen_uuid() from rdb$database
-- Ergebnis e.g. 017347BFE212B2479C00FA4323B36320 (16-Byte String)

UUID_TO_CHAR()

Verfügbar in

DSQL, PSQL

Ergebnistyp

CHAR(36)

Syntax
UUID_TO_CHAR (uuid)
Table 1. UUID_TO_CHAR-Funktionsparameter
Parameter Beschreibung

uuid

16-Byte UUID

Konvertiert eine 16-Byte-UUID in ihre 36-stellige, für Menschen lesbare ASCII-Darstellung.

UUID_TO_CHAR-Beispiele

select 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'

Funktionen für Sequenzen (Generatoren)

GEN_ID()

Verfügbar in

DSQL, ESQL, PSQL

Rückgabetyp

BIGINT — Dialect 2 und 3
INTEGER — Dialect 1

Syntax
GEN_ID (generator-name, step)
Table 1. GEN_ID-Funktionsparameter
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 INTEGER, in Dialekt 2 und 3 ist er BIGINT.

GEN_ID-Beispiel

new.rec_id = gen_id(gen_recnum, 1);

Bedingte Funktionen

COALESCE()

Verfügbar in

DSQL, PSQL

Ergebnistyp

Abhängig von der Eingabe

Syntax
COALESCE (<exp1>, <exp2> [, <expN> ... ])
Table 1. COALESCE-Funktionsparameter
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-Beispiele

Dieses 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()

Verfügbar in

DSQL, PSQL

Ergebnistyp

Abhängig von der Eingabe

Syntax
DECODE(<testexpr>,
  <expr1>, <result1>
  [<expr2>, <result2> …]
  [, <defaultresult>])

Das äquivalente CASE-Konstrukt:

CASE <testexpr>
  WHEN <expr1> THEN <result1>
  [WHEN <expr2> THEN <result2> …]
  [ELSE <defaultresult>]
END
Table 1. DECODE-Funktionsparameter
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 ‘=’. Wenn also testexpr NULL ist, wird es mit keinem der exprs übereinstimmen, nicht einmal mit denen, die NULL sind.

DECODE-Beispiele

select name,
  age,
  decode(upper(sex),
         'M', 'Male',
         'F', 'Female',
         'Unknown'),
  religion
from people
Siehe auch

CASE, Einfaches CASE

IIF()

Verfügbar in

DSQL, PSQL

Ergebnistyp

Abhängig von der Eingabe

Syntax
IIF (<condition>, ResultT, ResultF)
Table 1. IIF-Funktionsparameter
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(<Cond>, Result1, Result2) ist eine Abkürzung für “CASE WHEN <Cond> THEN Result1 ELSE Result2 END”.

IIF-Beispiele

select iif( sex = 'M', 'Sir', 'Madam' ) from Customers

MAXVALUE()

Verfügbar in

DSQL, PSQL

Ergebnistyp

Variiert je nach Eingabe — das Ergebnis hat denselben Datentyp wie der erste Ausdruck in der Liste (expr1).

Syntax
MAXVALUE (<expr1> [, ... , <exprN> ])
Table 1. MAXVALUE-Funktionsparameter
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-BLOBs 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-Beispiele

SELECT MAXVALUE(PRICE_1, PRICE_2) AS PRICE
  FROM PRICELIST

MINVALUE()

Verfügbar in

DSQL, PSQL

Ergebnistyp

Variiert je nach Eingabe — das Ergebnis hat denselben Datentyp wie der erste Ausdruck in der Liste (expr1).

Syntax
MINVALUE (<expr1> [, ... , <exprN> ])
Table 1. MINVALUE-Funktionsparameter
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-BLOBs 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-Beispiele

SELECT MINVALUE(PRICE_1, PRICE_2) AS PRICE
  FROM PRICELIST

NULLIF()

Verfügbar in

DSQL, PSQL

Ergebnistyp

Abhängig von der Eingabe

Syntax
NULLIF (<exp1>, <exp2>)
Table 1. NULLIF-Funktionsparameter
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-Beispiel

select 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.