Introduktion til Oracle sql-afkodning
I dette afsnit vil vi diskutere Oracle-afkodningsbehandling, som er et meget vigtigt aspekt af Oracle sql-sætning
Oracle decode er metoden i Oracle-databasen til at transformere dataværdier fra en værdi til en anden, som er bedre at forstå. Oracle Decode transformerer dataværdier ved hentning.
Det er en type Hvis så andet til behandlingen
Kodeblokken for Oracle sql Decode er nedenfor
decode(udtryk eller kolonnenavn, match, resultat [,match, resultat]...[,standard] )
Her er betydningen af termer i ovenstående kode
a) udtryk eller kolonne er den værdi, der skal sammenlignes
b) match er den værdi, der sammenlignes med udtryk
c) resultatet er den returnerede værdi, hvis udtryk er lig med match
d) er standarden valgfri. Hvis der ikke findes nogen overensstemmelser, vil afkoden returnere standard. Hvis standard er udeladt, vil decode-sætningen returnere NULL (ingen matches fundet).
Eksempel
vælg |
Her er algoritmen til bedre at forstå det
1) Oracle hent kolonneværdien for fasekode
2) hvis fasekode ='P' så afventer
3) hvis fasekode ='C' så fuldført
4) hvis fasekode ='T' derefter afsluttet
5) hvis fasekode ='S' så standby
6) Hvis fasekode ikke er nogen af ovenstående, returnerer afkoden Ukendt
7) Hvis standard ikke er til stede det vil give null
Bemærk, at Oracle-afkodningen starter med at angive kolonnenavnet eller udtrykket , efterfulgt af sæt af matchede par af transformationsværdier. I slutningen af decode-sætningen finder vi en standardværdi. Standardværdien fortæller decode, hvad der skal vises, hvis en kolonneværdi ikke er på den parrede liste.
Vi kunne sige algoritmen på denne måde
if (udtr. ==search1) return(result1); elseif (udtr. ==search2) return( resultat2); …elseif (udtr. ==søgen) return(resultn); else return(standard); |
Nogle flere punkter at huske for Oracle Decode
1) I en DECODE-funktion betragter Oracle to nuller for at være ækvivalente. Hvis expr er null, returnerer Oracle resultatet af den første søgning, som også er null.
SQL> SELECT decode(null,null,1,0) FROM dual;
DECODE(NULL,NULL,1,0)
———————
1
2) Det maksimale antal komponenter i DECODE-funktionen, inklusive expr, søgninger, resultater og standard, er 255.
3) Oracle konverterer automatisk værdierne for udtryk og compare_value til datatypen for den første compare_value. Også datatypen for return_value konverteres til datatypen for den første return_value. Hvis det første resultat har datatypen CHAR, eller hvis det første resultat er nul, så konverterer Oracle returværdien til datatypen VARCHAR2
Sådan læser du afkodning i Oracle
vi kan læse decode-sætningen som if-else if-sætning. Det første argument i decode-sætningen vil generelt være en kolonne, hvor datatransformation er nødvendig. Argumentet efter det vil være at sammenligne værdierne af det første argument med det
Ofte stillede spørgsmål om Oracle sql Decode-behandling
(1)Vi har set, at "udtr." bliver sidestillet med specificerede værdier. Kan vi bruge ulighedsoperatorer som> eller
Lad os tage et eksempel
SELECT DECODE(salary,<50000, sal + 1000, sal + 500) Final_salary FROM emp;
ERROR at line 2
ORA-00936:missing expression
Så det kan vi ikke bruge. Vi skal bruge en sagserklæring til at gøre det. eller vi kan signere funktion i decode for at opnå det
SELECT DECODE(sign(salary- 50000), -1,sal + 1000, sal + 500) Final_salary FROM emp;
Grundlæggende skal vi konvertere vores krav om en formel, der kan evalueres til en vis værdi
SELECT col1,col2 decode( abs(col1-col2), 0, 'col1 =col2',Col1-col2, 'col1> col2′,'col1
CASE kan fungere som en PL/SQL-konstruktion, men DECODE bruges kun i SQL-sætninger.CASE kan bruges som en parameter for en funktion/procedure.
CASE forventer datatypekonsistens, DECODE ikke
CASE forventer datatype konsistens, DECODE virker ikke
DECODE kan kun arbejde med skalære værdier, men CASE kan arbejde med logiske operatorer, prædikater og søgbare underforespørgsler.
Ja Det maksimale antal komponenter i DECODE-funktionen, inklusive expr, søgninger, resultater og standard, er 255.
Relaterede links
Oracle-dokumentation om afkodning
hvordan man skriver sql-forespørgsler
Grundlæggende SQL-erklæring
Oracle Case Statement forklaret med tips og eksempler
SQL-selvstudie