Konvertierungsfunktionen verwenden
Neben den SQL-Dienstprogrammfunktionen enthält die in Oracle integrierte Funktionsbibliothek Typkonvertierungsfunktionen. Es kann Szenarien geben, in denen die Abfrage Eingaben in einem bestimmten Datentyp erwartet, diese jedoch in einem anderen Datentyp empfängt. In solchen Fällen versucht Oracle implizit, den unerwarteten Wert in einen kompatiblen Datentyp zu konvertieren, der ersetzt werden kann, und die Anwendungskontinuität wird nicht beeinträchtigt. Die Typkonvertierung kann entweder implizit von Oracle oder explizit vom Programmierer durchgeführt werden.
Die implizite Datentypkonvertierung basiert auf einer Matrix, die die Unterstützung von Oracle für das interne Typumwandeln zeigt. Neben diesen Regeln bietet Oracle Typkonvertierungsfunktionen an, die in den Abfragen zur expliziten Konvertierung und Formatierung verwendet werden können. In der Tat wird empfohlen, eine explizite Konvertierung durchzuführen, anstatt sich auf Software Intelligence zu verlassen. Die implizite Konvertierung funktioniert zwar gut, aber um die Verzerrungschancen zu beseitigen, bei denen es schwierig sein kann, fehlerhafte Eingaben intern zu typisieren.
Implizite Datentypkonvertierung
Ein VARCHAR2- oder CHAR-Wert kann von Oracle implizit in einen Wert vom Typ NUMBER oder DATE konvertiert werden. Ebenso kann ein Wert vom Typ NUMBER oder DATA vom Oracle-Server automatisch in Zeichendaten konvertiert werden. Beachten Sie, dass die implizite Umwandlung nur dann erfolgt, wenn das Zeichen eine gültige Zahl oder einen gültigen Datumswert darstellt.
Untersuchen Sie beispielsweise die folgenden SELECT-Abfragen. Beide Abfragen führen zu demselben Ergebnis, da Oracle 15000 und '15000' intern als gleich behandelt.
Abfrage-1
SELECT employee_id,first_name,salary
FROM employees
WHERE salary > 15000;
Abfrage-2
SELECT employee_id,first_name,salary
FROM employees
WHERE salary > '15000';
Explizite Datentypkonvertierung
SQL-Konvertierungsfunktionen sind Funktionen für einzelne Zeilen, mit denen Spaltenwerte, Literale oder Ausdrücke typisiert werden können. TO_CHAR, TO_NUMBER und TO_DATE sind die drei Funktionen, die eine Kreuzmodifikation von Datentypen durchführen.
TO_CHAR-Funktion
Die Funktion TO_CHAR wird verwendet, um eine numerische oder Datumseingabe in den Zeichentyp mit einem Formatmodell (optional) zu typisieren.
Syntax
TO_CHAR(number1, [format], [nls_parameter])
Für die Konvertierung von Zahlen in Zeichen können nls-Parameter verwendet werden, um Dezimalzeichen, Gruppentrennzeichen, lokales Währungsmodell oder internationales Währungsmodell anzugeben. Dies ist eine optionale Spezifikation. Wenn diese Option nicht verfügbar ist, werden die Einstellungen für die Sitzungsebene nls verwendet. Für die Konvertierung von Datum in Zeichen kann der Parameter nls verwendet werden, um die Tages- und Monatsnamen anzugeben.
Datumsangaben können nach der Konvertierung in Zeichentypen mit der Funktion TO_CHAR in mehreren Formaten formatiert werden. Mit der Funktion TO_CHAR werden Oracle 11g-Anzeigedaten in einem bestimmten Format angezeigt. Formatmodelle unterscheiden zwischen Groß- und Kleinschreibung und müssen in einfache Anführungszeichen gesetzt werden.
Betrachten Sie die folgende SELECT-Abfrage. Die Abfrage formatiert die Spalten HIRE_DATE und SALARY der Tabelle EMPLOYEES mithilfe der Funktion TO_CHAR.
SELECT first_name,
TO_CHAR (hire_date, 'MONTH DD, YYYY') HIRE_DATE,
TO_CHAR (salary, '$99999.99') Salary
FROM employees
WHERE rownum < 5;
FIRST_NAME HIRE_DATE SALARY
-------------------- ------------------ ----------
Steven JUNE 17, 2003 $24000.00
Neena SEPTEMBER 21, 2005 $17000.00
Lex JANUARY 13, 2001 $17000.00
Alexander JANUARY 03, 2006 $9000.00
Mit dem ersten TO_CHAR wird das Mietdatum in das Datumsformat MONTH TT, JJJJ konvertiert, dh Monat, der mit Leerzeichen geschrieben und aufgefüllt ist, gefolgt vom zweistelligen Tag des Monats und dem vierstelligen Jahr. Wenn Sie den Monatsnamen lieber in gemischter Groß- / Kleinschreibung anzeigen möchten (dh "Dezember"), verwenden Sie diese Groß- / Kleinschreibung einfach im Formatargument: ('Monat TT, JJJJ').
Die zweite TO_CHAR-Funktion in Abbildung 10-39 wird zum Formatieren des GEHALTS verwendet, um das Währungszeichen und zwei Dezimalstellen anzuzeigen.
Oracle bietet umfassende Formatmodelle. Die folgende Tabelle zeigt die Liste der Formatmodelle, mit denen Datums- und Zahlenwerte mit TO_CHAR als Zeichen eingegeben werden können.
Modell formatieren | Beschreibung |
---|---|
,(Komma) | Es wird ein Komma an der angegebenen Position zurückgegeben. Sie können mehrere Kommas in einem Zahlenformatmodell angeben. Einschränkungen: Ein Kommaelement kann kein Zahlenformatmodell beginnen. Ein Komma kann in einem Zahlenformatmodell nicht rechts von einem Dezimalzeichen oder Punkt stehen. |
.(Zeitraum) | Gibt einen Dezimalpunkt zurück, der ein Punkt (.) An der angegebenen Position ist. Einschränkung: Sie können in einem Zahlenformatmodell nur einen Punkt angeben |
$ | Gibt den Wert mit einem führenden Dollarzeichen zurück |
0 | Gibt führende Nullen zurück. Gibt nachgestellte Nullen zurück. |
9 | Gibt einen Wert mit der angegebenen Anzahl von Ziffern mit einem führenden Leerzeichen (positiv) oder einem führenden Minuszeichen (negativ) zurück. Führende Nullen sind leer, mit Ausnahme eines Nullwerts, der eine Null für den ganzzahligen Teil der Festkommazahl zurückgibt. |
B. | Gibt Leerzeichen für den ganzzahligen Teil einer Festkommazahl zurück, wenn der ganzzahlige Teil Null ist (unabhängig von "0" im Formatmodell). |
C. | Gibt an der angegebenen Position das ISO-Währungssymbol zurück (den aktuellen Wert des Parameters NLS_ISO_CURRENCY). |
D. | Gibt an der angegebenen Position das Dezimalzeichen zurück, das der aktuelle Wert des Parameters NLS_NUMERIC_CHARACTER ist. Der Standardwert ist ein Punkt (.). Einschränkung: Sie können in einem Zahlenformatmodell nur ein Dezimalzeichen angeben. |
EEE | Gibt einen Wert in wissenschaftlicher Notation zurück. |
FM | Gibt einen Wert ohne führende oder nachfolgende Leerzeichen zurück. |
G | Gibt an der angegebenen Position das Gruppentrennzeichen zurück (den aktuellen Wert des Parameters NLS_NUMERIC_CHARACTER). Sie können mehrere Gruppentrennzeichen in einem Zahlenformatmodell angeben. Einschränkung: Ein Gruppentrennzeichen kann in einem Zahlenformatmodell nicht rechts von einem Dezimalzeichen oder Punkt stehen |
L. | Gibt an der angegebenen Position das Symbol der lokalen Währung zurück (den aktuellen Wert des Parameters NLS_CURRENCY). |
MI | Gibt einen negativen Wert mit einem nachgestellten Minuszeichen (-) zurück. Gibt einen positiven Wert mit einem nachgestellten Leerzeichen zurück. Einschränkung: Das MI-Formatelement kann nur an der letzten Position eines Zahlenformatmodells angezeigt werden. |
PR | Gibt einen negativen Wert in zurück. Es kann nur am Ende eines Zahlenformatmodells erscheinen. |
RN, rm | Gibt einen Wert als römische Ziffer in Großbuchstaben zurück. Gibt einen Wert als römische Ziffer in Kleinbuchstaben zurück. Der Wert kann eine Ganzzahl zwischen 1 und 3999 sein. |
S. | Gibt einen negativen Wert mit einem führenden oder nachfolgenden Minuszeichen (-) zurück. Gibt einen positiven Wert mit einem führenden oder nachfolgenden Pluszeichen (+) zurück. Einschränkung: Das S-Format-Element kann nur an der ersten oder letzten Position eines Zahlenformatmodells angezeigt werden. |
TM | "Text Minimum". Gibt (in Dezimalausgabe) die kleinstmögliche Anzahl von Zeichen zurück. Bei diesem Element wird die Groß- und Kleinschreibung nicht berücksichtigt. |
U. | Gibt an der angegebenen Position das Doppelwährungssymbol "Euro" (oder ein anderes) zurück (den aktuellen Wert des Parameters NLS_DUAL_CURRENCY). |
V. | Gibt einen mit 10n multiplizierten Wert zurück (und runden Sie ihn gegebenenfalls auf), wobei n die Anzahl der 9en nach dem "V" ist. |
X. | Gibt den Hexadezimalwert der angegebenen Anzahl von Ziffern zurück. |
TO_NUMBER Funktion
Die Funktion TO_NUMBER konvertiert einen Zeichenwert in einen numerischen Datentyp. Wenn die zu konvertierende Zeichenfolge nicht numerische Zeichen enthält, gibt die Funktion einen Fehler zurück.
Syntax
TO_NUMBER (string1, [format], [nls_parameter])
Die folgende Tabelle zeigt die Liste der Formatmodelle, mit denen Zeichenwerte mit TO_NUMBER als Zahl eingegeben werden können.
Modell formatieren | Beschreibung |
---|---|
CC | Jahrhundert |
SCC | Jahrhundert v. Chr. Mit dem Präfix - |
JJJJ | Jahr mit 4 Zahlen |
SYYY | Jahr BC mit dem Präfix - |
IYYY | ISO-Jahr mit 4 Zahlen |
YY | Jahr mit 2 Zahlen |
RR | Jahr mit 2 Zahlen mit Y2k-Kompatibilität |
JAHR | Jahr in Zeichen |
SYEAR | Jahr in Zeichen, BC mit dem Präfix - |
BC | BC / AD-Anzeige |
Q. | Viertel in Zahlen (1,2,3,4) |
MM | Monat des Jahres 01, 02 ... 12 |
MONAT | Monat in Zeichen (dh Januar) |
MON | JAN, FEB |
WW | Wochennummer (dh 1) |
W. | Wochennummer des Monats (dh 5) |
IW | Wochennummer des Jahres in ISO-Norm. |
DDD | Tag des Jahres in Zahlen (dh 365) |
DD | Tag des Monats in Zahlen (dh 28) |
D. | Wochentag in Zahlen (dh 7) |
TAG | Wochentag in Zeichen (dh Montag) |
FMDAY | Wochentag in Zeichen (dh Montag) |
DY | Wochentag in kurzer Charakterbeschreibung (dh SUN) |
J. | Julianischer Tag (Anzahl der Tage seit dem 1. Januar 4713 v. Chr., Wobei der 1. Januar 4713 v. Chr. 1 in Oracle ist) |
HH, H12 | Stundennummer des Tages (1-12) |
HH24 | Stundennummer des Tages mit 24-Stunden-Notation (0-23) |
AM, PM | Vormittags oder nachmittags |
FRÄULEIN | Anzahl der Minuten und Sekunden (dh 59), |
SSSSS | Anzahl der Sekunden an diesem Tag. |
DS | Kurzes Datumsformat. Hängt von den NLS-Einstellungen ab. Nur mit Zeitstempel verwenden. |
DL | Langes Datumsformat. Hängt von den NLS-Einstellungen ab. Nur mit Zeitstempel verwenden. |
E. | Kurzname der Ära. Gültig nur für Kalender: Japanese Imperial, ROC Official, Thai Buddha. |
EE | Der vollständige Name der Ära |
FF | Die Sekundenbruchteile. Verwendung mit Zeitstempel. |
FF1..FF9 | Die Sekundenbruchteile. Verwendung mit Zeitstempel. Die Ziffer steuert die Anzahl der Dezimalstellen, die für Sekundenbruchteile verwendet werden. |
FM | Füllmodus: Unterdrückt Leerzeichen in der Ausgabe der Konvertierung |
FX | Format Exact: Erfordert eine genaue Musterübereinstimmung zwischen Daten und Formatmodell. |
IYY ODER IY ODER I. | Die letzten 3,2,1 Ziffern des ISO-Standardjahres. Nur Ausgabe |
RM | Die römische Zahlendarstellung des Monats (I .. XII) |
RR | Die letzten 2 Ziffern des Jahres. |
RRRR | Die letzten 2 Ziffern des Jahres, wenn sie für die Ausgabe verwendet werden. Akzeptiert fünfstellige Jahre, wenn sie für die Eingabe verwendet werden. |
SP | Dinkelformat. Kann am Ende eines Zahlenelements erscheinen. Das Ergebnis ist immer in Englisch. Zum Beispiel gibt Monat 10 im Format MMSP "zehn" zurück. |
SPTH | Dinkel- und Ordnungsformat; 1 ergibt zuerst. |
TH | Konvertiert eine Zahl in ihr Ordnungsformat. Zum Beispiel wird 1 der 1 .. |
TS | Kurzzeitformat. Hängt von den NLS-Einstellungen ab. Nur mit Zeitstempel verwenden. |
TZD | Kurzname der Zeitzone. dh PST. |
TZH, TZM | Zeitzone Stunde / Minute Verschiebung. |
TZR | Zeitzonenbereich |
X. | Lokales Radix-Zeichen. In Amerika ist dies eine Periode (.) |
Die folgenden SELECT-Abfragen akzeptieren Zahlen als Zeicheneingaben und drucken sie gemäß dem Formatbezeichner.
SELECT TO_NUMBER('121.23', '9G999D99')
FROM DUAL
TO_NUMBER('121.23','9G999D99')
------------------------------
121.23
SELECT TO_NUMBER('1210.73', '9999.99')
FROM DUAL;
TO_NUMBER('1210.73','9999.99')
------------------------------
1210.73
TO_DATE-Funktion
Die Funktion verwendet Zeichenwerte als Eingabe und gibt ein formatiertes Datumsäquivalent zurück. Mit der Funktion TO_DATE können Benutzer ein Datum in einem beliebigen Format eingeben und anschließend den Eintrag in das von Oracle 11g verwendete Standardformat konvertieren.
Syntax:
TO_DATE( string1, [ format_mask ], [ nls_language ] )
Ein format_mask-Argument besteht aus einer Reihe von Elementen, die genau darstellen, wie die Daten aussehen sollen, und in einfache Anführungszeichen gesetzt werden müssen.
Modell formatieren | Beschreibung |
---|---|
JAHR | Jahr, buchstabiert |
JJJJ | 4-stelliges Jahr |
JJJ, JJ, Y. | Letzte 3, 2 oder 1 Ziffer (n) des Jahres. |
IYY, IY, ich | Letzte 3, 2 oder 1 Ziffer (n) des ISO-Jahres. |
IYYY | 4-stelliges Jahr basierend auf der ISO-Norm |
RRRR | Akzeptiert ein zweistelliges Jahr und gibt ein vierstelliges Jahr zurück. |
Q. | Quartal des Jahres (1, 2, 3, 4; JAN-MAR = 1). |
MM | Monat (01-12; JAN = 01). |
MON | Kurzname des Monats. |
MONAT | Name des Monats, mit Leerzeichen auf eine Länge von 9 Zeichen aufgefüllt. |
RM | Monat mit römischer Zahl (I-XII; JAN = I). |
WW | Woche des Jahres (1-53), wobei Woche 1 am ersten Tag des Jahres beginnt und bis zum siebten Tag des Jahres andauert. |
W. | Woche des Monats (1-5), wobei Woche 1 am ersten Tag des Monats beginnt und am siebten endet. |
IW | Woche des Jahres (1-52 oder 1-53) basierend auf der ISO-Norm. |
D. | Wochentag (1-7). |
TAG | Name des Tages. |
DD | Tag des Monats (1-31). |
DDD | Tag des Jahres (1-366). |
DY | Kurzname des Tages. |
J. | Julianischer Tag; die Anzahl der Tage seit dem 1. Januar 4712 v. |
HH12 | Stunde des Tages (1-12). |
HH24 | Stunde des Tages (0-23). |
FRÄULEIN | Minute (0-59). |
SSSSS | Sekunden nach Mitternacht (0-86399). |
FF | Bruchteil von Sekunden. Verwenden Sie nach FF einen Wert von 1 bis 9, um die Anzahl der Stellen in Sekundenbruchteilen anzugeben. Zum Beispiel 'FF4'. |
AM, PM | Meridiananzeige |
AD, BC | AD, BC Anzeige |
TZD | Informationen zur Sommerzeit. Zum Beispiel 'PST' |
TZH, TZM, TZR | Zeitzone Stunde / Minute / Region. |
Im folgenden Beispiel wird eine Zeichenfolge in ein Datum konvertiert:
SELECT TO_DATE('January 15, 1989, 11:00 A.M.', 'Month dd, YYYY, HH:MI A.M.', 'NLS_DATE_LANGUAGE = American')
FROM DUAL;
TO_DATE('
---------
15-JAN-89
Allgemeine Funktionen
Allgemeine Funktionen werden verwendet, um NULL-Werte in der Datenbank zu verarbeiten. Das Ziel der allgemeinen NULL-Handhabungsfunktionen besteht darin, die NULL-Werte durch einen alternativen Wert zu ersetzen. Wir werden diese Funktionen im Folgenden kurz durchgehen.
NVL
Die NVL-Funktion ersetzt einen NULL-Wert durch einen alternativen Wert.
Syntax:
NVL( Arg1, replace_with )
In der Syntax sind beide Parameter obligatorisch. Beachten Sie, dass die NVL-Funktion mit allen Arten von Datentypen funktioniert. Und auch, dass der Datentyp der ursprünglichen Zeichenfolge und der Ersatz in einem kompatiblen Zustand sein müssen, dh entweder gleich oder implizit von Oracle konvertierbar.
Wenn arg1 ein Zeichenwert ist, konvertiert oracle die Ersatzzeichenfolge vor dem Vergleich in den mit arg1 kompatiblen Datentyp und gibt VARCHAR2 im Zeichensatz von expr1 zurück. Wenn arg1 numerisch ist, bestimmt Oracle das Argument mit der höchsten numerischen Priorität, konvertiert das andere Argument implizit in diesen Datentyp und gibt diesen Datentyp zurück.
Die folgende SELECT-Anweisung zeigt 'n / a' an, wenn einem Mitarbeiter noch kein Job zugewiesen wurde, dh JOB_ID ist NULL. Andernfalls wird der tatsächliche JOB_ID-Wert angezeigt.
SELECT first_name, NVL(JOB_ID, 'n/a')
FROM employees;
NVL2
Als Erweiterung gegenüber NVL hat Oracle eine Funktion eingeführt, mit der nicht nur NULL-Spaltenwerte, sondern auch NICHT NULL-Spalten durch Werte ersetzt werden können. Die NVL2-Funktion kann verwendet werden, um einen alternativen Wert für einen NULL-Wert sowie einen Nicht-NULL-Wert zu ersetzen.
Syntax:
NVL2( string1, value_if_NOT_null, value_if_null )
Die folgende SELECT-Anweisung würde 'Bench' anzeigen, wenn JOB_CODE für einen Mitarbeiter NULL ist. Für einen bestimmten Wert von JOB CODE, der nicht null ist, wird der konstante Wert 'Job Assigned' angezeigt.
SQL> SELECT NVL2(JOB_CODE, 'Job Assigned', 'Bench')
FROM employees;
NULLIF
Die NULLIF-Funktion vergleicht zwei Argumente expr1 und expr2. Wenn expr1 und expr2 gleich sind, wird NULL zurückgegeben. Andernfalls wird expr1 zurückgegeben. Im Gegensatz zur anderen Nullbehandlungsfunktion kann das erste Argument nicht NULL sein.
Syntax:
NULLIF (expr1, expr2)
Beachten Sie, dass das erste Argument ein Ausdruck sein kann, der als NULL ausgewertet wird, aber nicht das Literal NULL. Beide Parameter sind für die Ausführung der Funktion obligatorisch.
Die folgende Abfrage gibt NULL zurück, da beide Eingabewerte 12 gleich sind.
SELECT NULLIF (12, 12)
FROM DUAL;
In ähnlicher Weise wird unter der Abfrage 'SUN' zurückgegeben, da beide Zeichenfolgen nicht gleich sind.
SELECT NULLIF ('SUN', 'MOON')
FROM DUAL;
VERSCHMELZEN
Die COALESCE-Funktion, eine allgemeinere Form von NVL, gibt den ersten Nicht-Null-Ausdruck in der Argumentliste zurück. Es werden mindestens zwei obligatorische Parameter benötigt, aber die maximale Anzahl von Argumenten ist unbegrenzt.
Syntax:
COALESCE (expr1, expr2, ... expr_n )
Betrachten Sie die folgende SELECT-Abfrage. Es wählt den ersten Wert ungleich Null aus, der in Adressfelder für einen Mitarbeiter eingegeben wird.
SELECT COALESCE (address1, address2, address3) Address
FROM employees;
Interessanterweise ähnelt die Funktion der COALESCE-Funktion dem Konstrukt IF..ELSIF..ENDIF. Die obige Abfrage kann wie folgt umgeschrieben werden:
IF address1 is not null THEN
result := address1;
ELSIF address2 is not null THEN
result := address2;
ELSIF address3 is not null THEN
result := address3;
ELSE
result := null;
END IF;
Bedingte Funktionen
Oracle bietet bedingte Funktionen DECODE und CASE, um auch in SQL-Anweisungen Bedingungen aufzuerlegen.
Die DECODE-Funktion
Die Funktion ist die SQL-Äquivalenz der bedingten prozeduralen Anweisung IF..THEN..ELSE. DECODE arbeitet mit Werten / Spalten / Ausdrücken aller Datentypen.
Syntax:
DECODE (expression, search, result [, search, result]... [, default])
Die DECODE-Funktion vergleicht den Ausdruck nacheinander mit jedem Suchwert. Wenn zwischen Ausdruck und Suchargument Gleichheit besteht, wird das entsprechende Ergebnis zurückgegeben. Falls keine Übereinstimmung vorliegt, wird der Standardwert zurückgegeben, falls definiert, andernfalls NULL. Im Falle einer Fehlanpassung der Typkompatibilität führt Oracle intern eine implizite Konvertierung durch, um die Ergebnisse zurückzugeben.
Tatsächlich betrachtet Oracle zwei Nullen als gleichwertig, wenn mit der DECODE-Funktion gearbeitet wird.
SELECT DECODE(NULL,NULL,'EQUAL','NOT EQUAL')
FROM DUAL;
DECOD
-----
EQUAL
Wenn expression null ist, gibt Oracle das Ergebnis der ersten Suche zurück, das ebenfalls null ist. Die maximale Anzahl von Komponenten in der DECODE-Funktion beträgt 255.
SELECT first_name, salary, DECODE (hire_date, sysdate,'NEW JOINEE','EMPLOYEE')
FROM employees;
CASE-Ausdruck
CASE-Ausdrücke funktionieren nach dem gleichen Konzept wie DECODE, unterscheiden sich jedoch in Syntax und Verwendung.
Syntax:
CASE [ expression ]
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
...
WHEN condition_n THEN result_n
ELSE result
END
Die Oracle-Suche beginnt von links und bewegt sich nach rechts, bis eine echte Bedingung gefunden wird, und gibt dann den damit verbundenen Ergebnisausdruck zurück. Wenn keine Bedingung als wahr befunden wird und eine ELSE-Klausel vorhanden ist, gibt Oracle das mit else definierte Ergebnis zurück. Andernfalls gibt Oracle null zurück.
Die maximale Anzahl von Argumenten in einem CASE-Ausdruck beträgt 255. Alle Ausdrücke zählen zu dieser Grenze, einschließlich des Anfangsausdrucks eines einfachen CASE-Ausdrucks und des optionalen ELSE-Ausdrucks. Jedes WHEN ... THEN-Paar zählt als zwei Argumente. Um dieses Überschreiten zu vermeiden, können Sie CASE-Ausdrücke so verschachteln, dass return_expr selbst ein CASE-Ausdruck ist.
SELECT first_name, CASE WHEN salary < 200 THEN 'GRADE 1'
WHEN salary > 200 AND salary < 5000 THEN 'GRADE 2'
ELSE 'GRADE 3'
END CASE
FROM employees;
ENAM CASE
---- -------
JOHN GRADE 2
EDWIN GRADE 3
KING GRADE 1