Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der Verwendung der Dekodierfunktion in Oracle

Detaillierte Erläuterung der Verwendung der Dekodierfunktion in Oracle

小云云
小云云Original
2018-05-15 15:07:143136Durchsuche

Die Funktion decode() ist eine der leistungsstärksten Funktionen in ORACLE PL/SQL. Derzeit bietet nur ORACLEs SQL diese Funktion, und die SQL-Implementierungen anderer Datenbankhersteller verfügen noch nicht über diese Funktion. In diesem Artikel werden hauptsächlich relevante Informationen zur Verwendung der Dekodierungsfunktion in Oracle vorgestellt. Freunde, die sie benötigen, können darauf zurückgreifen.

Bedeutungserklärung:

decode(condition, value 1, return value 1, value 2, return value 2,... value n, return Wert n, Standardwert)

Die Bedeutung dieser Funktion ist wie folgt:

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

Das Ergebnis dieser Funktion ist, dass, wenn der Wert des Feldes oder der Feldoperation gleich dem ist Wert 1, die Funktion gibt Wert 2 zurück, andernfalls gibt sie Wert 3 zurück
Natürlich können Wert 1, Wert 2 und Wert 3 auch Ausdrücke sein. Diese Funktion vereinfacht die Verwendung bestimmter SQL-Anweisungen erheblich :

1. Größen vergleichen

select decode(sign(variable 1-variable 2),-1, variable 1, variable 2) from dual;

Die Funktion sign() gibt 0, 1 bzw. -1 zurück, je nachdem, ob ein Wert 0, eine positive Zahl oder eine negative Zahl ist

Zum Beispiel:

Variable 1=10, Variable 2=20

Dann gibt sign(Variable 1-Variable 2) -1 zurück, und das Dekodierungsergebnis ist „Variable 1“, wodurch der Zweck erreicht wird, einen kleineren Wert anzunehmen.

2. Diese Funktion wird in SQL-Anweisungen verwendet. Die Funktion wird wie folgt eingeführt:

Die Dekodierfunktion ähnelt einer Reihe verschachtelter IF-THEN-ELSE-Anweisungen. base_exp wird nacheinander mit vergleichen1, vergleichen2 usw. verglichen. Wenn base_exp mit dem i-ten Vergleichselement übereinstimmt, wird der i-te entsprechende Wert zurückgegeben. Wenn base_exp mit keinem Vergleichswert übereinstimmt, wird der Standardwert zurückgegeben. Jeder Vergleichswert wird nacheinander ausgewertet. Wenn eine Übereinstimmung gefunden wird, werden die verbleibenden Vergleichswerte (falls vorhanden) nicht erneut ausgewertet. Ein NULL-base_exp wird als äquivalent zu einem NULL-Vergleichswert angesehen. Bei Bedarf wird jeder Vergleichswert in denselben Datentyp wie der erste Vergleichswert konvertiert, der auch der Rückgabewerttyp ist.

Die Decode-Funktion ist in der tatsächlichen Entwicklung sehr nützlich

In Kombination mit der Lpad-Funktion erfahren Sie, wie Sie automatisch 1 zum Wert des Primärschlüssels hinzufügen und 0 davor hinzufügen

dir-Wert Wenn er 1 ist, wird er zu 0, wenn er 0 ist, wird er zu 1

select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,'0') 记录编号 from tetdmis
 eg:
 select decode(dir,1,0,1) from a1_interval
Ich möchte beispielsweise die Anzahl der Jungen und Mädchen in einer bestimmten Klasse abfragen?

Normalerweise schreiben wir so:

Wenn Sie sie zusammen anzeigen möchten, müssen Sie sie vereinigen, was zu mühsam ist

select count(*) from 表 where 性别 = 男;
select count(*) from 表 where 性别 = 女;
Verwenden Sie die Dekodierung, Sie benötigen nur einen Satz

Verwandte Empfehlungen:

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


Die PHP-Methode json_decode kann keine speziellen Fragezeichen analysieren

Wie PHP json_decode ohne Escape implementiert Einführung in die chinesische Methode

Vergleichen Sie json_encode und den Unterschied zwischen json_decode

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der 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