IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Nombre non valide sur substr


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant ingénieur en ressources documentaires
    Inscrit en
    Novembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant ingénieur en ressources documentaires
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Nombre non valide sur substr
    Bonjour,

    J'ai un soucis d'erreur "ORA-01722 Nombre non valide" sur un substr (ligne 11 dans le code ci-dessous). Ce qui m'embête le plus c'est que ce substring fonctionne très bien sur d'autres requêtes...

    Pour info, la colonne en question renvoie des données du type 'default:UNIMARC:282164', le substr servant à extraire le numéro en fin de chaîne de caractère.
    Merci d'avance !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    SELECT 
      usr_prod.icomm_item.code as codebarre, 
      usr_prod.icomm_item.CALL_NUMBER as Cote,
      usr_prod.icomm_item.catalog_id as Exemplaire,
      count(usr_prod.dstat.text1) as nbr_out
    FROM 
      usr_prod.dstat
    RIGHT OUTER JOIN usr_prod.icomm_item
      ON usr_prod.icomm_item.code = usr_prod.dstat.text1
      WHERE substr(usr_prod.icomm_item.catalog_id, 17) in 
    (select usr_prod_v1.unimarc.UNIQUE_KEY
    FROM usr_prod_v1.unimarc
    WHERE (
    usr_prod_v1.unimarc.UNIMARC12 like '19%'
    ))
    AND
    usr_prod.icomm_item.site=1
    AND
    usr_prod.icomm_item.CALL_NUMBER like '8%'
    group by usr_prod.icomm_item.code, usr_prod.icomm_item.catalog_id, usr_prod.icomm_item.CALL_NUMBER
    order by usr_prod.icomm_item.CALL_NUMBER, count(usr_prod.dstat.text1)
    ;

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Il suffit qu'une seule ligne de ta table ne corresponde pas au format attendu...

    Sinon...quel est le type de la colonne usr_prod_v1.unimarc.UNIQUE_KEY ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Rajoute un To_CHAR sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (select usr_prod_v1.unimarc.UNIQUE_KEY
    qui doit renvoyer un number.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT 'Ok'
    FROM (SELECT 'abc:1' t FROM dual 
    			UNION ALL SELECT 'abc:X' t FROM dual ) w
    WHERE SUBSTR(w.t, 5) IN (SELECT 1 FROM dual)
     
    ORA-01722: invalid number sur SELECT 'abc:1' t FROM dual 
     
    SELECT 'Ok'
    FROM (SELECT 'abc:1' t FROM dual 
    			UNION ALL SELECT 'abc:X' t FROM dual ) w
    WHERE SUBSTR(w.t, 5) IN (SELECT '1' FROM dual)
     
    'Ok'
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. ORA-01722: Nombre non valide
    Par misa dans le forum Oracle
    Réponses: 4
    Dernier message: 18/12/2007, 15h23
  2. Oracle - Nombre non valide
    Par pado_83 dans le forum JDBC
    Réponses: 2
    Dernier message: 28/09/2006, 15h11
  3. [SQLLDR]ORA-01722: Nombre non valide
    Par syl2095 dans le forum Oracle
    Réponses: 5
    Dernier message: 22/05/2006, 15h42
  4. Réponses: 7
    Dernier message: 07/03/2006, 09h34
  5. [JDBC] Opération non valide sur un ensemble
    Par marti dans le forum JDBC
    Réponses: 2
    Dernier message: 13/10/2005, 19h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo