Heim  >  Artikel  >  Datenbank  >  So verwenden Sie die Dekodierfunktion in Oracle

So verwenden Sie die Dekodierfunktion in Oracle

小云云
小云云Original
2017-12-11 14:44:254140Durchsuche

In diesem Artikel werden hauptsächlich Beispiele für die Verwendung der Dekodierungsfunktion in Oracle vorgestellt. Ich hoffe, Sie können die Verwendung der Dekodierungsfunktion beherrschen, nachdem Sie sie gemeinsam erlernt haben.

Mehrere Verwendungsmöglichkeiten von Decodierung

1: Verwenden Sie Decodierung, um festzustellen, ob die Zeichenfolgen gleich sind

DECODE(value, if1, then1,if2,then2,if3,then3,...,else)

bedeutet
WENN Bedingung = Wert 1 DANN
  RETURN(Wert 1)

ELSIF-Bedingung=Wert 2 DANN
  RETURN(Wert 2)
 ……

ELSIF-Bedingung=Wert n DANN
  RETURN(Wert 3)
ELSE
  RETURN (Standard)
END IF

SQL-Test

select empno,decode(empno,7369,&#39;smith&#39;,7499,&#39;allen&#39;,7521,&#39;ward&#39;,7566,&#39;jones&#39;,&#39;unknow&#39;) as name from emp where rownum<=10

Ausgabeergebnis

7369 smith
7499 allen
7521 ward
7566 jones
7654 unknow
7698 unknow
7782 unknow
7788 unknow
7839 unknow
7844 unknow

2: Dekodieren verwenden, um Größen zu vergleichen

select decode(sign(var1-var2) ,- 1,var 1,var2) aus der Funktion dual

sign() gibt 0, 1, -1 zurück, je nachdem, ob ein Wert 0, positiv oder negativ ist

Ausgabeergebnis
select decode(sign(100-90),-1,100,90) from dual

100 -90=10>0 wird zurückgegeben 1, also ist der Endwert der Dekodierfunktion 90
90

Wie auch immer


Ausgabeergebnis
select decode(sign(100-90),1,100,90) from dual

100-90=10>0 gibt 1 zurück, das Beurteilungsergebnis ist 1, die erste Variable 100 wird zurückgegeben und das endgültige Ausgabeergebnis ist 100
100

3: Verwenden Sie die Dekodierfunktion, um

Ein Gehalt über 5000 ist ein hohes Gehalt, ein Gehalt zwischen 3000 und 5000 ein mittleres Gehalt und ein Gehalt unter 3000 Niedriges Gehalt

SQL-Test


Ergebnisse ausgeben
SELECT 
  ename,sal,
  DECODE(SIGN(sal - 5000),
      1,
      &#39;high sal&#39;,
      0,
      &#39;high sal&#39;,
      - 1,
      DECODE(SIGN(sal - 3000),
          1,
          &#39;mid sal&#39;,
          0,
          &#39;mid sal&#39;,
          - 1,
          DECODE(SIGN(sal - 1000),
              1,
              &#39;low sal&#39;,
              0,
              &#39;low sal&#39;,
              - 1,
              &#39;low sal&#39;)))
FROM
  emp

SMITH  800  low sal
ALLEN 1600 low sal
WARD 1250 low sal
JONES 2975 low sal
MARTIN 1250 low sal
BLAKE  2850 low sal
CLARK 2450 low sal
SCOTT 3000 mid sal
KING 5000 high sal
TURNER 1500 low sal
ADAMS 1100 low sal
JAMES 950     low sal
FORD 3000 mid sal
MILLER 1300 low sal
4: Verwenden Sie die Dekodierung, um die Zeilen- und Spaltenkonvertierung von Tabellen oder Ansichten zu realisieren

SQL-Test

Die Ausgabeergebnisse lauten wie folgt
SELECT 
    SUM(DECODE(ENAME,&#39;SMITH&#39;,SAL,0)) SMITH,
    SUM(DECODE(ENAME,&#39;ALLEN&#39;,SAL,0)) ALLEN,
    SUM(DECODE(ENAME,&#39;WARD&#39;,SAL,0))  WARD,
    SUM(DECODE(ENAME,&#39;JONES&#39;,SAL,0)) JONES,
    SUM(DECODE(ENAME,&#39;MARTIN&#39;,SAL,0)) MARTIN FROM EMP

SMITH ALLEN WARD  JONES MARTIN
 800 1600  1250    2975    1250
5: Verwenden Sie die Dekodierfunktion, um nach Zeichenfolgen zu suchen Ausdrücke

dekodieren (Ausdruck, Suche_1, Ergebnis_1, Suche_2, Ergebnis_2, ...., Suche_n, Ergebnis_n, Standard)

Dekodierungsfunktion vergleicht Ausdruck und Suchwort, wenn es übereinstimmt, wird das Ergebnis zurückgegeben; wenn es nicht übereinstimmt, wird der Standardwert zurückgegeben; wenn der Standardwert nicht definiert ist, wird ein Nullwert zurückgegeben.


SQL-Test


Ausgabeergebnisse
SELECT 
  ENAME,
  SAL,
  DECODE(INSTR(ENAME, &#39;S&#39;),
      0,
      &#39;不含有s&#39;,
      &#39;含有s&#39;) AS INFO
FROM
  EMP

Dekodierungsfunktion ist in der tatsächlichen Entwicklung sehr nützlich
SMITH 800      含有s
ALLEN 1600  不含有s
WARD 1250  不含有s
JONES 2975   含有s
MARTIN 1250   不含有s
BLAKE 2850   不含有s
CLARK 2450   不含有s
SCOTT 3000  含有s
KING 5000  不含有s
TURNER 1500  不含有s
ADAMS 1100  含有s
JAMES 950       含有s
FORD 3000  不含有s
MILLER 1300  不含有s

Kombiniert mit der Lpad-Funktion, wie automatisch 1 zum Wert des Primärschlüssels hinzugefügt und 0 davor hinzugefügt wird


wählen Sie LPAD(decode(count(record number),0,1,max(to_number(record number)+1)),14,'0') record number from tetdmis


zB :


select decode(dir,1,0,1) from a1_interval


Der Wert von dir ändert sich von 1 auf 0, und wenn er 0 ist, ändert er sich bis 1


Zum Beispiel möchte ich die Anzahl der Jungen und Mädchen in einer bestimmten Klasse abfragen?


Normalerweise schreiben wir so:

select count( *) aus der Tabelle mit Geschlecht=männlich;
wählen Sie count(*) aus der Tabelle mit Geschlecht=weiblich


Wenn Sie sie zusammen anzeigen möchten, müssen Sie sie zusammenführen, was auch der Fall ist mühsam

Dekodierung verwenden, nur ein Satz


select sum(decode(gender, male, 1, 0)), sum(decode(gender, female, 1, 0)) aus Tabelle


zB:


Haben Sie es gelernt? Beeilen Sie sich und probieren Sie es aus.
select sum(decode(siteno,&#39;LT&#39;,1,0)),sum(decode(siteno,&#39;SZ&#39;,1,0)) from facd605;

select sum(case siteno when &#39;LT&#39; then 1 else 0 end),sum(case siteno when &#39;SZ&#39; then 1 else 0 end) from facd605;

Verwandte Empfehlungen:

Dinge, auf die Sie bei der json_decode-Funktion in PHP achten sollten

Detaillierte Erläuterung der häufig verwendeten Funktion Trunc von Oracle

Detaillierte Erläuterung des Beispiels für eine benutzerdefinierte Oracle-Split-Funktion

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Dekodierfunktion in Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn