ORA-00920: non valide d'opérateur relationnel
Cette requête SQL semble être de frapper 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;
Ce que vous essayez de faire ici. Cas dans le groupe???
Êtes-vous attachant à mettre le nom d'utilisateur de la réunion reg ex dans un groupe reste sur il y a le nom d'utilisateur?
veuillez voir ici: stackoverflow.com/questions/10763043/...
votre created_dt est de type date heure?
Fondamentalement, il est en train de vérifier si le nom d'utilisateur est numérique, par exemple 34535, overrideit comme GRP_OTHERS cette annonce comte de GRP_OTHERS.
Êtes-vous attachant à mettre le nom d'utilisateur de la réunion reg ex dans un groupe reste sur il y a le nom d'utilisateur?
veuillez voir ici: stackoverflow.com/questions/10763043/...
votre created_dt est de type date heure?
Fondamentalement, il est en train de vérifier si le nom d'utilisateur est numérique, par exemple 34535, overrideit comme GRP_OTHERS cette annonce comte de GRP_OTHERS.
OriginalL'auteur Oh Chin Boon | 2012-05-26
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas une DB Oracle de jouer avec, mais j'imagine que ce pourrait être parce que vous sélectionnez
username
mais ne pas le groupe. Vous devriez être en mesure de contourner en utilisant une sous-requête:Un couple de plus de pensées, alors. Je ne suis pas sûr si Oracle regexp prend en charge
\d
. Vous souhaiterez peut-être utiliser[0-9]
ou[:digit:]
à la place. Quelle version d'Oracle utilisez-vous? Est-il possible qu'il ne reconnaît pasREGEXP_LIKE
pour une raison quelconque? Essayez quelque chose commeselect 1 from dual where regexp_like('123', '^[0-9]$')
et voir si vous obtenez une erreur...je suis en utilisant 9i, je vais vérifier sur votre recommandation, maintenant.
Oui, je reçois une erreur lorsque je fais le select 1 from ...
Ah, il semble
REGEXP_LIKE
a été introduit dans 10G... Ceci pourrait vous aider... Ou vous pouvez certains google pour trouver d'autres solutions de contournement ^_^OriginalL'auteur jswolf19
Je n'ai pas tout à fait sûrs de ce que vous avez posté...
Votre requête doit jeter
ORA-00979: Not a GROUP BY expression
. C'est parce que les colonnes non inclus dans une fonction analytique, à savoirusername
ne sont pas prises en compte dans votregroup by
.ORA-00920 implique qu'il vous manque l'un des éléments suivants:
=, <>, not in, in, !=, is not null, is null, not like, like
etc. Êtes-vous sûr que vous avez posté la bonne requête?Dans la section 11.2, de créer quelque chose qui se rapproche de votre tableau, comme suit:
puis en exécutant la requête de résultats publiés dans ORA-00979. La modification de cette à la suite des travaux de l'amende.:
Cela peut aussi être réécrite sous la forme:
Je pense que cette deuxième requête est plus comme ce que vous voulez. Il revient à l'utilisateur-le nom, mais des groupes de tous ceux qui sont des chiffres ensemble. Il suffit de remplacer le nom d'utilisateur de la colonne renvoyée par le cas si vous voulez voir
GRP_OTHERS
à la place.C'est légèrement mieux ne pas utiliser le
mon
format de modèle dans Oracle comme il n'est pas, nécessairement, cohérente à travers les langues. Utilisationmm
à la place.Que vous utilisez 9i vous pouvez utiliser traduire à la place. Remplacer les regexes avec:
Cela remplace les numéros de rien, puis vérifie si il n'y a rien à gauche...
stackoverflow.com/questions/10763043/... auriez-vous une alternative à cela, sachant que regexp_like ne fonctionne pas dans 9i
J'ai mis à jour ma réponse.
OriginalL'auteur Ben