none
Filtrage inopérant entre une donnée issue d'un lien Oracle et SQL Server RRS feed

  • Question

  • Bonjour,

    Je suis confronté à un problème incompréhensible.

    Dans une requête SQL, je fais un lien entre une table MSSQL et une table Oracle.

    Sur une colonne de la table Oracle je fais un filtre sur une valeur numérique.

    Concrètement, je fais un : "AND d.nodos = 9885"

    Ce filtre ne fonctionne pas. Si je supprime ce filtre, la ligne s'affiche.

    Si je fais un AND d.nodos > 9884 la ligne s'affiche

    Si je fais un AND d.nodos < 9886 la ligne s'affiche

    Si je fais un AND d.nodos = 9885 la ligne ne s'affiche pas.

    J'ai tenté de convertir par un cast, aucun changement.

    J'ai vérifié que cette donnée nodos n'avait pas de caractères spéciaux renvoyés lors de passage du DbLink

    Bref je suis un peu perdu. Vous y voyez une raison  ?

    Merci

    mercredi 10 décembre 2014 10:17

Toutes les réponses

  • Quel est le type de la colonne nodos dans la table ?

    f.belhocine

    mercredi 10 décembre 2014 10:35
  • Dans Oracle, NUMBER(6)
    mercredi 10 décembre 2014 10:37
  • êtes vous sûres qu'elle est déclarée comme NUMBER(6) ?

    je pense que c'est un problème de précision et scale (Exemple : Précision 8, scale 3: 99999.999)

    Et dans votre cas a valeur n'est pas effectivement 9885 mais peut être égale à 9884.99999 selon le Scale déclaré pour la colonne.


    f.belhocine

    mercredi 10 décembre 2014 10:52
  • Bonjour,

    Tout à fait : 

    CREATE TABLE DOSSIER
    (
      NODOS                         NUMBER(6),

    J'ai aussi pensé à ce souci de précision, mais j'ai également tenté l'arrondi à l'entier, et même souci

    mercredi 10 décembre 2014 10:58
  • Si j'ai bien compris vous avez même testé avec la fonction ROUND

    AND ROUND(d.nodos)=9885 mais ça ne marche pas.

    A mon avis tentez de faire la comparaison du ROUND(d.nodos) avec 9885 et 9886 pour pouvoir éliminer le problème de précision.

    Une autre proposition est de faire carrément une requête UPDATE sur la ligne pour mettre à jour la colonne à la valeur 9885 directement à partir d'un éditeur SQL.


    f.belhocine

    mercredi 10 décembre 2014 13:23