Inleiding tot Oracle SQL-decodering
In deze sectie zullen we het hebben over Oracle-decoderingsverwerking, wat een zeer belangrijk aspect is van de Oracle SQL-instructie
Oracle decoderen is de methode in de Oracle-database om gegevenswaarden van de ene waarde naar de andere te transformeren, wat beter te begrijpen is. Oracle Decode transformeert gegevenswaarden tijdens het ophalen.
Het is een soort Als dan anders voor de verwerking
Het codeblok voor Oracle sql Decode staat hieronder
decoderen(uitdrukking of kolomnaam, overeenkomst, resultaat [,overeenkomst, resultaat]…[,default] )
Dit is de betekenis van termen in bovenstaande code
a) uitdrukking of kolom is de waarde die moet worden vergeleken
b) overeenkomst is de waarde die wordt vergeleken met uitdrukking
c) resultaat is de geretourneerde waarde, als expressie gelijk is aan match
d) standaard is optioneel. Als er geen overeenkomsten worden gevonden, wordt de decodering standaard geretourneerd. Als standaard wordt weggelaten, retourneert de decodeeropdracht NULL (geen overeenkomsten gevonden).
Voorbeeld
select |
Hier is het algoritme om het beter te begrijpen
1) Oracle haalt de kolomwaarde op van Fasecode
2) if Phase code ='P' then Pending
3) if Phase code ='C' then Completed
4) if Phase code ='T' dan Beëindigd
5) als Fasecode ='S' dan Standby
6) Als Fasecode geen van de bovenstaande is, retourneert de decodering Onbekend
7) Als de standaardwaarde niet aanwezig is het geeft null
Merk op dat Oracle-decodering begint met het specificeren van de kolomnaam of uitdrukking , gevolgd door een reeks overeenkomende paren transformatiewaarden. Aan het einde van de decodeeropdracht vinden we een standaardwaarde. De standaardwaarde vertelt decoderen wat er moet worden weergegeven als een kolomwaarde niet in de gepaarde lijst staat.
We zouden het algoritme zo kunnen zeggen
if (expr ==zoeken1) return(result1); elseif (expr ==zoeken2) return( resultaat2); …elseif (expr ==searchn) return(resultn); else return(standaard); |
Nog meer punten om te onthouden voor Oracle Decode
1)In een DECODE-functie beschouwt Oracle twee nullwaarden als equivalent. Als expr null is, retourneert Oracle het resultaat van de eerste zoekopdracht die ook null is.
SQL> SELECT decode(null,null,1,0) FROM dual;
DECODE(NULL,NULL,1,0)
———————
1
2) Het maximum aantal componenten in de DECODE-functie, inclusief expr, zoekopdrachten, resultaten en standaard, is 255.
3) Oracle converteert automatisch de waarden voor expressie en vergelijk_waarde naar het datatype van de eerste vergelijk_waarde. Ook het datatype van de return_value wordt geconverteerd naar het datatype van de eerste return_value. Als het eerste resultaat het datatype CHAR heeft of als het eerste resultaat null is, dan converteert Oracle de retourwaarde naar het datatype VARCHAR2
Decodering lezen in Oracle
we kunnen de decodeerinstructie lezen als een if-else if-instructie. Het eerste argument in de decoderingsinstructie zal over het algemeen een kolom zijn waar gegevenstransformatie nodig is. Het argument daarna zal de waarden van het eerste argument ermee vergelijken
Veelgestelde vragen over Oracle sql Decode-verwerking
(1)We hebben gezien dat "expr" wordt gelijkgesteld aan gespecificeerde waarden. Kunnen we ongelijkheidsoperatoren gebruiken zoals> of
Laten we een voorbeeld nemen
SELECT DECODE(salary,<50000, sal + 1000, sal + 500) Final_salary FROM werkn;
ERROR op regel 2
ORA-00936:ontbrekende expressie
Daar kunnen we dus geen gebruik van maken. Hiervoor hebben we een casusverklaring nodig. of we kunnen de functie ondertekenen in decoderen om het te bereiken
SELECT DECODE(sign(salary-50000), -1,sal + 1000, sal + 500) Final_salary FROM emp;
Kortom, we moeten onze vereiste voor een formule die kan evalueren tot een bepaalde waarde
SELECT col1,col2 decode(abs(col1-col2), 0, ‘col1 =col2’,Col1-col2, ‘col1> col2′,’col1
CASE kan werken als een PL/SQL-constructie, maar DECODE wordt alleen gebruikt in SQL-statements.CASE kan worden gebruikt als parameter van een functie/procedure.
CASE verwacht consistentie van datatype, DECODE niet
CASE verwacht datatype consistentie, DECODE niet
DECODE kan alleen werken met scalaire waarden, maar CASE kan werken met logische operators, predikaten en doorzoekbare subquery's.
Ja Het maximum aantal componenten in de DECODE-functie, inclusief expr, zoekopdrachten, resultaten en standaard, is 255.
Verwante links
Oracle-documentatie over decoderen
hoe sql-query's te schrijven
Basic Sql-statement
Oracle Case Statement uitgelegd met tips en voorbeelden
SQL-tutorial