die Verwendung eines char-Cast in einer Gruppe-by-Klausel Ergebnisse etwas Unerwartetes:Oracle SQL - Gruppe von char werfen
select cast(col as char(2)) from (
select 'Abc' as col from dual
union all
select 'Abc' as col from dual
) group by cast(col as char(10));
Das Ergebnis ist 'Abc '
(10 Zeichen lang). Intuitiv , würde ich Oracle erwartet hat eine der folgenden zurückzukehren:
- eine Fehlermeldung: ‚keine Gruppe-by-Expression‘, wie die Gruppe-BY-Klausel ist eine andere als die Auswahl Klausel
- Ein Ergebnis der Länge 2
'Ab'
.
Ersetzen cast(col as char(2))
mit cast(col as char(3))
kehrt Oracle einen Fehler 'keine Gruppe-by Ausdruck'. Dies ist wiederum ein sehr merkwürdiges Verhalten.
Wie kann das erklärt werden? Was ist der Grund dafür?
Ich benutze Oracle SQL 11g.
Ich habe gerade auf 11g getestet und es produziert die gleichen Ergebnisse für die Werte 1-11, mit Ausnahme von 3. Sehr seltsam in der Tat. Für mich scheint das ein Fehler zu sein. Die Rückkehr sollte "Ab" sein. Der erwartete Wert wird zurückgegeben, wenn Sie eine Aggregationsfunktion verwenden. –
Identisch mit Oracle 12 – sstan
Warum verwenden Sie in einer Abfrage group by, die keine Aggregationsfunktion verwenden? – scaisEdge