0
votes

Dans l'opérateur entre deux listes ne fonctionne pas dans Oracle

Lorsque j'utilise sans opérateur, comme en dessous de son fonctionnement xxx pré>

mais lorsque j'utilise dans l'opérateur comme étant ci-dessous GET ORA-00920: Erreur de l'opérateur relationnel non valide P>

SELECT * FROM range_name_t where ( cty_code_iso, lang_code_iso ) IN ( 'CN','zh' );

    ORA-00920: invalid relational operator
    00920. 00000 -  "invalid relational operator"


1 commentaires

Vérifiez avec expliquer le plan avec et sans dans l'opérateur, vous pouvez voir différents plans d'exécution


3 Réponses :


1
votes

Je n'ai pas vos tables, mais j'ai l'EMP de Scott pour le démontrer: XXX


0 commentaires

3
votes

Selon le Documentation Oracle du Code> Condition :

in_conditions :: = strong> p>

 en syntaxe de condition p>

expression_list :: = strong> p>

 Entrez la description de l'image ici p>

Si vous utilisez la forme supérieure de la condition code> in_condition code> (avec une seule expression à gauche de l'opérateur), vous devez utiliser la forme supérieure de expression_list code>. Si vous utilisez la forme inférieure de cette condition (avec plusieurs expressions à gauche de l'opérateur), vous devez utiliser la forme inférieure de expression_list code>, et les expressions de chaque expression_list doivent correspondre au nombre et au type de données. les expressions à gauche de l'opérateur. P> blockQuote>

Vous utilisez la version "inférieure" de la syntaxe et correspondant à une tuple de valeurs sur le côté gauche du dans code> condition; Donc, le côté droit doit être une liste de tuples et vous devez utiliser un second ensemble de supports (les crochets extérieurs de la liste et les supports internes autour de chaque tuple dans la liste): P>

CTY_CODE_ISO | LANG_CODE_ISO
:----------- | :------------
CN           | zh           


0 commentaires

0
votes
SELECT * FROM range_name_t
WHERE cty_code_iso IN ('CN') AND lang_code_iso IN ('zh');
I see nothing wrong with your leading example query. Is there a reason you have to use "IN"? All of the answers so far (including this one) walk a fine line between clever uses of "IN" and abusing "IN".

0 commentaires