Maison  >  Article  >  base de données  >  Explication détaillée de l'utilisation de la fonction de décodage dans Oracle

Explication détaillée de l'utilisation de la fonction de décodage dans Oracle

小云云
小云云original
2018-05-15 15:07:143136parcourir

La fonction decode() est l'une des fonctions les plus puissantes d'ORACLE PL/SQL. Actuellement, seul SQL d'ORACLE fournit cette fonction, et les implémentations SQL d'autres fabricants de bases de données ne disposent pas encore de cette fonction. Cet article présente principalement les informations pertinentes sur l'utilisation de la fonction de décodage dans Oracle. Les amis qui en ont besoin peuvent s'y référer. J'espère que cela sera utile.

Explication du sens :

decode(condition, valeur 1, valeur de retour 1, valeur 2, valeur de retour 2,... valeur n, retour valeur n, valeur par défaut)

La signification de cette fonction est la suivante :

IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF
decode(字段或字段的运算,值1,值2,值3)

Le résultat de cette fonction est que lorsque la valeur du champ ou de l'opération sur le terrain est égale à la valeur 1, la fonction renvoie la valeur 2, sinon renvoie la valeur 3
Bien sûr, la valeur 1, la valeur 2 et la valeur 3 peuvent également être des expressions. Cette fonction rend certaines instructions SQL beaucoup plus simples

Utilisation. :

1. Comparez les tailles

sélectionnez decode(sign(variable 1-variable 2),-1, variable 1, variable 2) from dual --prenez la valeur la plus petite ;

La fonction sign() renvoie respectivement 0, 1 et -1 selon qu'une valeur est 0, un nombre positif ou un nombre négatif

Par exemple :

Variable 1=10, Variable 2=20

Ensuite, le signe (variable 1-variable 2) renvoie -1, et le résultat du décodage est "variable 1", atteignant l'objectif de prendre une valeur plus petite.

2. Cette fonction est utilisée dans les instructions SQL. La fonction est présentée comme suit :

La fonction Decode est similaire à une série d'instructions IF-THEN-ELSE imbriquées. base_exp est comparée à compare1, compare2, etc. dans l'ordre. Si base_exp correspond au i-ème élément de comparaison, renvoie la i-ème valeur correspondante. Si base_exp ne correspond à aucune valeur de comparaison, la valeur par défaut est renvoyée. Chaque valeur de comparaison est évaluée dans l'ordre, et si une correspondance est trouvée, les valeurs de comparaison restantes (le cas échéant) ne sont pas évaluées à nouveau. Une base_exp NULL est considérée comme équivalente à une valeur de comparaison NULL. Si nécessaire, chaque valeur de comparaison est convertie dans le même type de données que la première valeur de comparaison, qui est également le type de valeur de retour.

La fonction Decode est très utile en développement réel

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

select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,'0') 记录编号 from tetdmis
 eg:
 select decode(dir,1,0,1) from a1_interval

valeur dir Si c'est 1, ça devient 0, si c'est 0, ça devient 1

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

Habituellement, nous écrivons comme ceci :

select count(*) from 表 where 性别 = 男;
select count(*) from 表 where 性别 = 女;

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

Pour utiliser le décodage, vous n'avez besoin que d'une seule phrase

select sum(decode(性别,男,1,0)),sum(decode(性别,女,1,0)) from 表
eg:
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;
vinson

Recommandations associées :

La méthode PHP json_decode ne peut pas analyser les caractères de point d'interrogation spéciaux

Comment PHP implémente json_decode sans échapper à l'introduction de la méthode chinoise

Comparez json_encode et La différence entre json_decode

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