1.Beispiel
Die Abfrage in diesem Beispiel bezieht sich im Gegensatz zum 2.Beispiel
immer auf "GLEICHHEIT", somit kann der Syntax bei der Abfrage auf Gleichheit
reduziert werden und ist somit einfacher zu lesen.
Der Datentyp des Attributes und des im Case
abgefragten Wertes sowie das Ergebnis müssen
dem gleichen Datentyp entsprechen.
Hinter dem "end" wird mit "as prstaff" die Überschrift
der Spalte "PRSTAFF" definiert. Wird das "as prstaff" weggelassen
so würde in der Spalte für "PRSTAFF" eine "2" stehen. In
diesem Beispiel bleibt der Wert "12" erhalten.
|
||||||||||||||||||||||||||||||||||||||||||
select projno
, case prstaff
when 12
then 12
else 20
end as prstaff
from project;
|
||||||||||||||||||||||||||||||||||||||||||
Ergebnis 1.Beispiel
|
||||||||||||||||||||||||||||||||||||||||||
2.Beispiel
Dieser Syntax wird verwendet, wenn der der CASE auf
UNGLEICHHEIT abgefragt werden muss. Bei Gleichheit ist der
Syntax im 1.Beispiel vorzuziehen.
Der Datentyp des Attributes und des im CASE
abgefragten Wertes sowie das Ergebnis müssen
dem gleichen Datentyp entsprechen.
Hinter dem "end" wird mit "as prstaff" die Überschrift
der Spalte "PRSTAFF" definiert. Wird das "as prstaff" weggelassen
so würde in der Spalte für "PRSTAFF" eine "2" stehen.
|
||||||||||||||||||||||||||||||||||||||||||
select projno
, case prstaff
when prstaff < 10
then 9
else 11
end as prstaff
from project;
|
||||||||||||||||||||||||||||||||||||||||||
Ergebnis 2.Beispiel
|
||||||||||||||||||||||||||||||||||||||||||
3.Beispiel
Dieser Syntax wird verwendet, um über CASE Daten
zu manipulieren und danach über den neu berechneten Wert
eine Selektion durchzuführen. In der Ausgabe wird nicht der
manipulierte Wert ausgegeben, sondern der tatsächliche Dateninhalt von
prstaff.
In diesem Bespiel bleibt der
Wert "2" von prstaff unberücksichtigt,da auf diesen Datenwert
nicht selektiert wird.
|
|||||||||
select projno
, projname
, prstaff
from project
where (case
when prstaff < 2 then (prstaff * 10)
when prstaff > 2 then (prstaff * 5.5)
end
) > 60 |
|||||||||
Ergebnis 3.Beispiel
|
|||||||||
4.Beispiel
Dieser Syntax wird verwendet, um über CASE Daten
zu manipulieren und danach über den neu berechneten Wert
eine Selektion durchzuführen.
In diesem Beispiel werden in dept nur die Werte 10 und 20 berücksichtigt.
Neu berechnet wird das Attribut years, das Ergebnis wird als Selektionskriterium
verwendet. Der komplette CASE wird auf Gleichheit abgefragt.
In der Ausgabe werden keine manipulierten Werte angezeigt.
|
||||||||||||||||||||||||||||
select *
from staff
where (case
when dept = 10 then (years * 4)
when dept = 20 then (years * 5)
end
) = 40 |
||||||||||||||||||||||||||||
Ergebnis 4.Beispiel
|
||||||||||||||||||||||||||||
5.Beispiel
In diesem CASE werden Character Datentypen, in Verbindung
mit einem SUBSTRING, verglichen. Der Vergleich auf "job = Mgr" führt zu keinem Ergebnis.
Es werden nur die Zeilen gefunden die im "job" den Wert "Clerk" enthalten.
In der Ausgabe werden keine manipulierten Werte angezeigt.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
select *
from staff
where (case
when job = 'Clerk' then substr(job,1,1)
when job = 'Mgr' then substr(job,2,1)
end
) = 'C' |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ergebnis 5.Beispiel
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6.Beispiel
In diesem CASE werden Character Datentypen, in Verbindung
mit einem SUBSTRING, verglichen. In "when" wird auf "job" verglichen und
nach dem then wird ein Vergleich auf "name" durchgeführt.
In der Ausgabe werden keine manipulierten Werte angezeigt.
|
|||||||||||||||||||||||||||||||||||||||||||||||||
select *
from staff
where (case
when job = 'Clerk' then substr(name,4,1)
when job = 'Mgr' then substr(name,2,1)
end
) = 'a' |
|||||||||||||||||||||||||||||||||||||||||||||||||
Ergebnis 6.Beispiel
|
|||||||||||||||||||||||||||||||||||||||||||||||||