Menu Content/Inhalt
Home arrow PostgreSQL arrow Konstanten anderer Typen
Konstanten anderer Typen PDF Drucken E-Mail

Konstanten anderer Typen

Konstanten eines beliebigen Typs können folgendermassen geschrieben werden:

typ 'zeichen' 'zeichen' ::typ CAST ( 'zeichen' AS typ) 

Tatsächlich sind dies alles Zeichenkettenkonstanten mit ausdrücklicher Typumwandlung. Die Typumwandlung kann weggelassen werden, wenn es keine Zweideutigkeit bezüglich des Typs gibt, den die Konstante haben muss (zum Beispiel wenn sie als Argument einer nicht überladenen Funktion verwendet wird); in diesen Fall wird sie automatisch umgewandelt.

Die Formen :: und CAST () können auch verwendet werden, um den Typ eines beliebigen Ausdrucks anzugeben, wohingegen typ 'zeichen' nur mit Konstanten verwendet werden kann. Eine weitere Einschränkung bezüglich typ 'zeichen' ist, dass es nicht für Arraytypen funktioniert. Verwenden Sie :: oder cast(), um den Typ einer Arraykosntanten festzulegen.

Operatoren

Ein Operatorname ist eine Folge von bis zu 63 Zeichen aus der folgenden Liste.

+ - * / , . = ~ ! @ # % ^ & I ` ? 

mit folgenden Einschraenkungen:

>, -- und / * können nirgendwo in einem Operatornamen auftauchen, weil sie als der Anfang eines Kommentars verstanden werden.
Ein Operatorname, der aus mehreren Zeichen besteht, kann nicht auf + oder - enden, es sei denn, der Name enthält mindestens eins der folgenden Zeichen.

~ ! @ # % ^ & l ` ? 

So ist zum Beispiel @- ein zulässiger Operatorname, nicht aber *-. Diese Einschränkung erlaubt es PostgreSQL, Befehle, die dem SQL-Standard folgen, zu verarbeiten, ohne Leerzeichen zwischen den Tokens zu benötigen.

Alle Operatornamen können als binaerer Infix-Operator, unärer Praefix-Operator oder unärer Postfix-Operator definiert sein. Ausserdem können die Schlüsselwörter AND, OR und NOT als Operatoren gezählt werden.
Schemaqualifizerte Operatornamen müssen folgendermassen geschrieben werden:
OPERATOR (schema.operator)
Zum Beispiel:

SELECT 3 OPERATOR(pg_catalog.+) 4; 

Diese Konstruktion ist allerdings nur für Ausnahmefälle gedacht; in der Praxis verwendet man normalerweise den Schemasuchpfad für Operatoren.

Operatornamen, die nicht dem SQL-Standard enstsprechen, müssen meist durch Leerzeichen voneinander getrennt werden, um Unklarheiten zu vermeiden. Wenn Sie zum Beispiel einen linken Praefixoperator namens @ definiert haben, dann können Sie nicht X*@Y schreiben, sondern Sie müssen X* @Y (oder vielleicht besser X*(@Y)) schreiben, um sicherzustellen, dass PostgreSQL den Ausdruck als zwei Operatornamen liest und nicht als nur einen. Bei Operatoren, die dem SQL-Standard entsprechen, ist dies normalweise wegen der zweiten obigen Regel nicht notwendig.
Die hier aufgeführten Syntaxregeln beschrieben nur die theoretisch möglichen Operatornamen.
Die folgende Tabelle zeigt den Vorrang (in absteigender Reihenfolge) und die Anhänglichkeit der Operatoren sowie anderer Syntax-elemente in PostgreSQL.

Operator/ElementAnhänglichkeitBeschreibung
.linksTrennung von Tabellen-/Spaltennamen
::linksTypumwandlung PostgreSQL-Stil
[ ]linksAuswahl Arrayelement
-rechtsunäres Minus (Minus als Vorzeichen)
^linksPotenzierung
* / %linksMultiplikation, Division, Modulus
+ -linksAddition, Subtraktion
ISIS TRUE, IS FALSE, IS UNKNOWN, IS NULL
ISNULLTest für Null
NOTNULLTest für nicht NULL
(alle anderen)linksalle anderen eingebauten und benutzerdefinierten Operatoren sowie OPERATOR(. . .)-Konstrukte
INMengenmitgliedschaft
BETWEENVergleich
OVERLAPSZeitintervall überlappt
LIKE ILIKE SIMILARMustervergleich von Zeichenketten
<,>kleiner als, grosser als
=rechts Gleichheit, Wertzuweisung
NOTrechtslogische Negierung
ANDlinkslogische Konjunktion
ORlinkslogische Disjunktion

Um den Vorrang der Operatoren in Ausdrücken zu ändern, müssen Klammern verwendet werden.

 
< Zurück   Weiter >

Scroll-news

Mailingliste:
http://mlists.in-berlin.de/mailman/listinfo/lieo-mlists.in-berlin.de 

 

Das Forum ist online gegangen

 


Who's Online

Aktuell 36 Gäste online

Google AdSense