ORA-00920: Ungültiger Vergleichsoperator
Diese SQL-Abfrage scheint zu schlagen ORA 00920.
select username, count(*)
from host
where created_dt
between to_date('2012-may-23 00:00:00', 'yyyy-mon-dd hh24:mi:ss')
and to_date('2012-may-23 23:59:59', 'yyyy-mon-dd hh24:mi:ss')
GROUP BY CASE
WHEN REGEXP_LIKE(username, '^\d+$') THEN 'GRP_OTHERS'
ELSE username
END;
Was Sie hier zu tun versuchen. Fall in der Gruppe durch???
Sind Sie binden zu legen Benutzernamen meeting reg ex in eine Gruppe Ruhe dort Benutzername?
sehen Sie bitte hier: stackoverflow.com/questions/10763043/...
Ihre created_dt ist vom Typ Datum Zeit?
Im Grunde ist es versucht, zu überprüfen, ob der Benutzername ist numerisch, z.B. 34535, overrideit als GRP_OTHERS und ad diese zählen zu GRP_OTHERS.
Sind Sie binden zu legen Benutzernamen meeting reg ex in eine Gruppe Ruhe dort Benutzername?
sehen Sie bitte hier: stackoverflow.com/questions/10763043/...
Ihre created_dt ist vom Typ Datum Zeit?
Im Grunde ist es versucht, zu überprüfen, ob der Benutzername ist numerisch, z.B. 34535, overrideit als GRP_OTHERS und ad diese zählen zu GRP_OTHERS.
InformationsquelleAutor Oh Chin Boon | 2012-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, haben eine Oracle-DB zu spielen, aber ich kann mir vorstellen, könnte es sein, weil Sie wählen
username
aber nicht die Gruppe. Sie sollten in der Lage sein, das zu umgehen, mithilfe einer Unterabfrage:Ein paar mehr Gedanken, dann. Ich bin mir nicht sicher, wenn die Oracle-regexp unterstützt
\d
. Sie verwenden möchten, können[0-9]
oder[:digit:]
statt. Welche version von Oracle verwenden Sie? Ist es möglich, dass es nicht erkenntREGEXP_LIKE
aus irgendeinem Grund? Versuchen Sie so etwas wieselect 1 from dual where regexp_like('123', '^[0-9]$')
und sehen, wenn Sie eine Fehlermeldung erhalten...ich bin mit 9i, prüfe ich auf Ihre Empfehlung jetzt.
Ja, ich erhalte eine Fehlermeldung wenn ich den select 1 from ...
Ah, es scheint
REGEXP_LIKE
wurde eingeführt, 10G... Dieser vielleicht helfen Ihnen... Oder Sie tun können, einige googeln zu finden, andere workarounds ^_^InformationsquelleAutor jswolf19
Ich weiß nicht so Recht trauen, was Sie geschrieben...
Ihre Abfrage zu werfen sollte
ORA-00979: Not a GROUP BY expression
. Dies ist, weil die Spalten nicht enthalten in eine analytische Funktion, nämlichusername
sind, spiegelt sich nicht in Ihremgroup by
.ORA-00920 bedeutet, dass Sie fehlen eine der folgenden Optionen:
=, <>, not in, in, !=, is not null, is null, not like, like
etc. Bist du sicher, dass du gepostet hast der richtige Abfrage?11.2, etwas zu schaffen, nähert sich Ihrem Tisch, und zwar so:
und dann läuft die Abfrage gepostet, die Ergebnisse in ORA-00979. Ändern Sie diese an die folgende Arbeit ist in Ordnung.:
Diese können alternativ neu geschrieben werden als:
Ich denke, diese zweite Abfrage ist mehr wie, was Sie wollen. Es gibt die eigentlichen user-Namen, sondern die Gruppen, sind diejenigen, die nur Ziffern zusammen. Ersetzen Sie einfach die username-Spalte zurückgegeben, die durch die Falle, wenn Sie wollen, um zu sehen
GRP_OTHERS
statt.Es ist etwas besser nicht die Verwendung der
Mo
- format-Modell in Oracle, da es nicht unbedingt konsistent Sprachen. Verwendenmm
statt.Als Sie mit 9i, die Sie verwenden können, zu übersetzen statt. Ersetzen Sie die regexes mit:
Diese ersetzt zahlen mit nichts und dann überprüft, um zu sehen, ob es etwas nach Links...
stackoverflow.com/questions/10763043/... hätten Sie eine alternative dazu, zu wissen, dass regexp_like funktioniert nicht in 9i
Ich aktualisiert meine Antwort.
InformationsquelleAutor Ben