Maison >base de données >tutoriel mysql >Comment utiliser la fonction de décodage dans Oracle
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,'smith',7499,'allen',7521,'ward',7566,'jones','unknow') 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
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, 'high sal', 0, 'high sal', - 1, DECODE(SIGN(sal - 3000), 1, 'mid sal', 0, 'mid sal', - 1, DECODE(SIGN(sal - 1000), 1, 'low sal', 0, 'low sal', - 1, 'low sal'))) 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 sal4 : 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,'SMITH',SAL,0)) SMITH, SUM(DECODE(ENAME,'ALLEN',SAL,0)) ALLEN, SUM(DECODE(ENAME,'WARD',SAL,0)) WARD, SUM(DECODE(ENAME,'JONES',SAL,0)) JONES, SUM(DECODE(ENAME,'MARTIN',SAL,0)) MARTIN FROM EMP
Les résultats de sortie sont les suivants
SMITH ALLEN WARD JONES MARTIN 800 1600 1250 2975 12505 : 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, 'S'), 0, '不含有s', '含有s') 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=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,'LT',1,0)),sum(decode(siteno,'SZ',1,0)) from facd605; select sum(case siteno when 'LT' then 1 else 0 end),sum(case siteno when 'SZ' 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 phpExplication détaillée de la fonction Oracle couramment utilisée Trunc Explication détaillée de l'exemple de fonction de fractionnement personnalisé OracleCe 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!