Aufrufausdrücke in Operatorausdrücken in SQL [] (Aufrufausdrücke in Operatorausdrücken in SQL), Lektion, Seite 723283
https://www.purl.org/stefan_ram/pub/aufrufausdruecke_sql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

Aufrufausdrücke in Operatorausdrücken in SQL  (MySQL )

Operanden dürfen auch Aufrufe  sein.

Ein Aufruf einer Funktion, der den Typ »double« hat darf überall dort verwendet werden, wo wir bisher auch ein double-Literal oder einen double-Operatorausdruck mit dem Typ »double« verwendet haben. Der Aufrufausdruck steht dabei für seinen Wert, also den Rückgabewert der aufgerufenen Funktion.

Wir haben bisher schon Literale  als Ausdrücke kennengelernt.

Konsole
SELECT 1;
+---+
| 1 |
+---+
| 1 |
+---+

Wir haben schon Ausdruckklammern  als Operatoren kennengelernt.

Konsole
SELECT ( 1 );
+---+
| 1 |
+---+
| 1 |
+---+

Zuletzt hatten wir Funktionsaufrufe  als Ausdrücke kennengelernt.

Konsole
SELECT RAND();
+---------------------+
| RAND() |
+---------------------+
| 0.47321682094895917 |
+---------------------+

Das folgende Beispiel zeigt nun, daß Aufrufe auch als Operanden von Operatoren verwendet werden können. Im folgenden Beispiel ist der Aufruf »RAND()« Operand des Klammeroperators.

Konsole
SELECT ( RAND() );
+--------------------+
| ( RAND() ) |
+--------------------+
| 0.5588298240293095 |
+--------------------+

Wir hatten zuvor schon gesehen, daß Literale  und andere Operatorausdrücke  Operanden sein können. Überall, wo ein Literal stehen kann, kann stattdessen auch ein Aufruf  mit demselben Datentyp, wie ihn das Literal hat, stehen. Daher können auch Aufrufe als Operanden verwendet werden. Allgemein sind als Operanden alle Ausdrücke mit einem passenden Datentyp zulässig.

Das folgende Beispiel zeigt eine doppelte Anwendung des Klammeroperators auf einen Aufruf (die hier keine tieferen Sinn hat, sondern nur als ein weiteres Beispiel dienen soll).

Konsole
SELECT ( ( RAND() ));
+--------------------+
| ( ( RAND() )) |
+--------------------+
| 0.7939846280906206 |
+--------------------+

Das folgende Beispiel zeigt eine Division mit zwei Operanden: der erste Operand ist ein Funktionsaufruf, der zweite ein Numerale.

Konsole
SELECT RAND() / 10.0;
+----------------------+
| RAND() / 10.0 |
+----------------------+
| 0.029343369909881963 |
+----------------------+

Das folgende Beispiel zeigt eine Summe mit zwei Operanden: der erste Operand ist ein Funktionsaufruf, der zweite ein Numerale.

Konsole
SELECT RAND() + 10.0;
+--------------------+
| RAND() + 10.0 |
+--------------------+
| 10.085214641955881 |
+--------------------+

Das folgende Beispiel zeigt eine Produkt mit zwei Operanden: der erste Operand ist ein Numerale, der zweite ein Funktionsaufruf.

Konsole
SELECT 100 * RAND();
+-------------------+
| 100 * RAND() |
+-------------------+
| 54.57721432165915 |
+-------------------+

Prioritäten

In der folgenden Liste führen wir den Aufrufoperator zur Übersicht mit auf, obwohl es sich bei den einem Funktionsnamen nachgestellen Klammmern nicht um einen Operator handelt, da ein Funktionsname selber kein Ausdruck (und daher kein Operand) ist.

Priorität und Assoziativität der bisher behandelten Operatoren
()                   Eingeklammerter Ausdruck
() Aufrufoperator
+ - Unaere vorangestellte Operatoren
* / Multiplikation, Division
+ - Addition, Subtraktion

Übungsfragen

?   Typen und Wertebereiche

In welchem Bereich liegt der Wert  des Ausdrucks »( ( RAND() ))«?

In welchem Bereich liegt der Wert  des Ausdrucks »RAND() + 10«?

In welchem Bereich liegt der Wert  des Ausdrucks »10 * RAND()«?

In welchem Bereich liegt der Wert  des Ausdrucks »10 * RAND() + 10«?

Welchen Typ  hat der Ausdruck »( ( RAND() ))«? *

Welchen Typ  hat der Ausdruck »RAND() + 10«? (Dies wurde im Kurs bisher eventuell nicht richtig erklärt, dann muß man hier raten!) *

Übungsaufgaben

Würfeln

Schreiben Sie eine SELECT-Abfrage, welche bei jeder Ausführung eine der Zahlen 1, 2, 3, 4, 5 oder 6 liefert, die dabei alle mit gleicher Wahrscheinlichkeit möglich sein sollen. (Es ist ausreichend, wenn dabei Zahlen mit Nachkommastellen ausgegeben werden, deren Vorkommastelle  mit gleicher Wahrscheinlichkeit eine der Zahlen 1, 2, 3, 4, 5 oder 6 ist. Es wird nicht verlangt, die Nachkommastellen abzuschneiden.)

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723283 stefan_ram:723283 Aufrufausdrücke in Operatorausdrücken in SQL Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723283, slrprddef723283, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/aufrufausdruecke_sql