Maison  >  Article  >  base de données  >  Comment utiliser la fonction de décodage dans Oracle

Comment utiliser la fonction de décodage dans Oracle

小云云
小云云original
2017-12-11 14:44:254096parcourir

Cet article présente principalement des exemples d'utilisation de la fonction de décodage dans Oracle. J'espère que vous pourrez maîtriser l'utilisation de la fonction de décodage après l'avoir apprise.

Plusieurs utilisations du décodage

1 : Utilisez le décodage pour déterminer si les chaînes sont identiques

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

signifie
SI condition = valeur 1 ALORS
  RETOUR(valeur 1)

Condition ELSIF=valeur 2 ALORS
  RETURN(valeur 2)
 ……

Condition ELSIF=valeur n ALORS
  RETURN(valeur 3)
ELSE
  RETURN (par défaut)
END IF

test SQL

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

Résultat de sortie

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

2 : Utilisez le décodage pour comparer les tailles

sélectionnez decode(sign(var1-var2) ,- 1,var 1,var2) de la fonction dual

sign() renvoie respectivement 0, 1, -1 selon qu'une valeur est 0, positive ou négative
sql test

.

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

Résultat de sortie

90

100 -90=10>0 sera renvoyé 1, donc la valeur finale de la fonction de décodage est 90


Quoi qu'il en soit

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

Résultat de sortie

100

100-90=10>0 renvoie 1, le résultat du jugement est 1, la première variable 100 est renvoyée et le résultat final de sortie est 100


3 : Utilisez la fonction de décodage pour segmenter


Un salaire supérieur à 5 000 est un salaire élevé, un salaire entre 3 000 et 5 000 est un salaire moyen, un salaire inférieur à 3 000 est un salaire faible. salaire


test SQL

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

Résultats de sortie

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 : Utilisez le décodage pour réaliser la conversion de lignes et de colonnes de tables ou de vues


test SQL

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

Les résultats de sortie sont les suivants

SMITH ALLEN WARD  JONES MARTIN
 800 1600  1250    2975    1250

5 : Utilisez la fonction de décodage pour rechercher des chaînes à l'aide d'expressions


decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)


la fonction decode compare l'expression et la recherche mot, si s'il correspond, le résultat est renvoyé ; s'il ne correspond pas, la valeur par défaut est renvoyée ; si la valeur par défaut n'est pas définie, une valeur nulle est renvoyée.


Test SQL

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

Résultats de sortie

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

La fonction de décodage est très utile dans le développement réel


Combinée avec la fonction Lpad, comment ajouter automatiquement 1 à la valeur de la clé primaire et ajouter 0 devant


sélectionnez LPAD(decode(count(record number),0,1,max(to_number(record number)+1)),14,'0') numéro d'enregistrement à partir de tetdmis


par exemple :


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


La valeur de dir passe de 1 à 0, et si elle est 0, elle change à 1


Par exemple, je souhaite interroger le nombre de garçons et de filles dans une certaine classe ?


Habituellement, nous écrivons comme ceci :

select count( *) from table Where Gender=male;

select count(*) from table Where Gender=female


Si vous souhaitez les afficher ensemble, vous devez les unir, ce qui est trop gênant


Utilisez le décodage, une seule phrase


sélectionnez sum(decode(gender, male, 1, 0)), sum(decode(gender, female, 1, 0)) du tableau


par exemple :

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;

L'avez-vous tous appris ? Dépêchez-vous et essayez-le.

Recommandations associées :

Points à prendre en compte avec la fonction json_decode en php

Explication détaillée de la fonction Oracle couramment utilisée Trunc

Explication détaillée de l'exemple de fonction de fractionnement personnalisé Oracle

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn