Die Ausdrücke in der SELECT-Liste können komplizierter sein als nur Spaltennamen oder Zeichenfolgen. Sie können in einer SELECT-Liste beispielsweise Berechnungen mit Daten aus numerischen Spalten vornehmen.
Um die numerischen Vorgänge zu veranschaulichen, die Sie in der SELECT-Liste ausführen können, beginnen Sie mit einer Liste der Namen, der Lagermengen und der Stückpreise von Produkten aus der SQL Anywhere-Beispieldatenbank.
SELECT Name, Quantity, UnitPrice FROM Products; |
Name | Quantity | UnitPrice |
---|---|---|
Tee Shirt | 28 | 9 |
Tee Shirt | 54 | 14 |
Tee Shirt | 75 | 14 |
Baseball Cap | 112 | 9 |
... | ... | ... |
Nehmen wir einmal an, die Regel für den Warenumschlag lautet, dass das Lager aufgefüllt wird, wenn nur noch weniger als 10 Stück vorhanden sind. In der folgenden Abfrage wird die Anzahl der Artikel angezeigt, die verkauft werden müssen, bevor eine Nachbestellung erfolgt ("Sell before reorder"):
SELECT Name, Quantity - 10 AS "Sell before reorder" FROM Products; |
Name | Sell before reorder |
---|---|
Tee Shirt | 18 |
Tee Shirt | 44 |
Tee Shirt | 65 |
Baseball Cap | 102 |
... | ... |
Sie können die Werte auch in Spalten zusammenfassen. In der folgenden Abfrage wird der Gesamtwert der einzelnen Artikel aus dem Lager aufgelistet ("Inventory value"):
SELECT Name, Quantity * UnitPrice AS "Inventory value" FROM Products; |
Name | Inventory value |
---|---|
Tee Shirt | 252.00 |
Tee Shirt | 756.00 |
Tee Shirt | 1050.00 |
Baseball Cap | 1008.00 |
... | ... |
Wenn mehr als ein arithmetischer Operator in einem Ausdruck vorhanden ist, werden Multiplikation, Division und Modulo zuerst berechnet, dann Subtraktion und Addition. Wenn alle arithmetischen Operatoren in einem Ausdruck denselben Vorrang haben, erfolgt die Durchführung von links nach rechts. Ausdrücke in Klammern haben Vorrang vor allen anderen Vorgängen.
Beispiel: Die folgende SELECT-Anweisung berechnet den Gesamtwert der einzelnen Artikel auf Lager und subtrahiert dann fünf Dollar von diesem Wert.
SELECT Name, Quantity * UnitPrice - 5 FROM Products; |
Um korrekte Ergebnisse sicherzustellen, verwenden Sie soweit möglich Klammern. Die folgende Abfrage hat dieselbe Bedeutung und liefert dieselben Ergebnisse wie die vorherige Abfrage, ist aber präziser.
SELECT Name, ( Quantity * UnitPrice ) - 5 FROM Products; |
Arithmetische Vorgänge können einen Überlauf verursachen, wenn sich ihre Ergebnisse nicht im Datentyp darstellen lassen. Wenn ein Überlauf eintritt, wird anstelle eines Werts ein Fehler zurückgegeben.
Sie können Zeichenfolgen verketten, indem Sie einen entsprechenden Operator benutzen. Verwenden Sie dafür || (definiert von SQL/2008) oder + (unterstützt von Adaptive Server Enterprise) als Operator für die Verkettung von Zeichenfolgen. Beispiel: Die folgende Anweisung ruft "GivenName"- und "Surname"-Werte ab und verkettet sie in den Ergebnissen:
SELECT EmployeeID, GivenName || ' ' || Surname AS Name FROM Employees; |
EmployeeID | Name |
---|---|
102 | Fran Whitney |
105 | Matthew Cobb |
129 | Philip Chin |
148 | Julie Jordan |
... | ... |
Obwohl Sie Operatoren für Spalten mit Datums- und Zeitangaben verwenden können, sollten dafür normalerweise Funktionen herangezogen werden.
Spalten kann ein Alias gegeben werden Standardmäßig ist der Spaltenname der in der SELECT-Liste aufgeführte Ausdruck. Für berechnete Spalten ist der Ausdruck jedoch etwas umständlich und nicht sehr informativ.
Andere Operatoren können verwendet werden Der Multiplikationsoperator kann zum Kombinieren von Spalten verwendet werden. Sie können auch andere Operatoren verwenden, einschließlich der normalen arithmetischen Operatoren sowie der logischen und Zeichenfolgenoperatoren.
Die folgende Abfrage listet z.B. den vollständigen Namen aller Kunden auf:
SELECT ID, (GivenName || ' ' || Surname ) AS "Full name" FROM Customers; |
Der Operator ||
verkettet Zeichenfolgen. In dieser Abfrage enthält der Alias für die Spalte Leerstellen und muss daher in Anführungszeichen
eingeschlossen werden. Diese Regel gilt nicht nur für Spaltenaliase, sondern auch für Tabellennamen und andere Bezeichner
in der Datenbank.
Funktionen können verwendet werden Zusätzlich zu den Optionen für die Kombination von Spalten können Sie eine Vielzahl integrierter Funktionen verwenden, um die gewünschten Ergebnisse zu erhalten.
Die folgende Abfrage listet z.B. die Produktnamen in Großbuchstaben auf:
SELECT ID, UCASE( Name ) FROM Products; |
ID | UCASE(Products.name) |
---|---|
300 | TEE SHIRT |
301 | TEE SHIRT |
302 | TEE SHIRT |
400 | BASEBALL CAP |
... | ... |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |