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 :

Recherche de caractères dans un champ de type LONG


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut Recherche de caractères dans un champ de type LONG
    Bonjour,

    Je post ici car je rencontre un problème que je n'arrive pas à solutionner.
    Je tente de reconnaître de 'couper' les X premiers caractères dans un champ de type LONG, seulement j'ai toujours le même souci :

    ORA-00932 : Type de données incohérents

    Exemple de ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT SUBSTR(DEMANDE.DESCRIPTIF,5)
    FROM STAFF.DEMANDE DEMANDE
    WHERE (DEMANDE.STATUT_DEMANDE='Suspendue')
    Ma version d'Oracle est la version 9i.

    J'ai essayé de passer la chaine de caractères comprise dans DEMANDE.DESCRIPTIF en char avec TO_CHAR, mais cela n'a pas fonctionné.

    Quelqu'un a t'il une idée, ou a déja rencontré ce problème ?

    Merci par avance.

    Tsuna

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    TO_LOB serait surement plus approprié

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Bonjour et merci pour votre réponse,

    J'ai lu le tuto sur LOB, type que je ne connaissais pas (je suis nouveau sous Oracle).

    J'ai essayé de l'utiliser mais je n'y suis pas arrivé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT SUBSTR(TO_LOB(DEMANDE.DESCRIPTIF),5)
    FROM STAFF.DEMANDE DEMANDE
    WHERE (DEMANDE.STATUT_DEMANDE='Suspendue')
    Je n'ai des droits qu'en lecture sur la base, cela peut-il poser problème ?

    Toujours la même erreur : Type de données incohérents.

    Tsuna

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Non, ça ne marchera pas... le long peut-il dépasser 32000 caractères ? Pourquoi ne pas modifier le type de colonne en CLOB ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Oui, le LONG peut dépasser 32 000 caractères.

    Je suis en prestation et travaille sur la base de données d'un client, et ils sont plutôt réticents à vouloir modifier des choses. Je doute donc que leur DBA modifie le type de colonne.

    Sinon je suis bien d'accord (malgré ma petite expérience ), suite aux lectures que j'ai faites, que ce serait préférable de modifier le type en CLOB.

    Existe t'il un moyen de contourner cela ? Sinon, j'irai à l'attaque du client

    Tsuna

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par Tsuna78 Voir le message
    Je doute donc que leur DBA modifie le type de colonne.
    si il y a un DBA et qu'il est assez malin pour ne pas vouloir remplacer les LONG par des LOB j'suis sûr qu'il aura une idée brillante pour te sortir de ce mauvais pas

    Citation Envoyé par Tsuna78 Voir le message
    Existe t'il un moyen de contourner cela ? Sinon, j'irai à l'attaque du client
    passer par une table intermédiaire pour utiliser TO_LOB mais en plus d'être bien compliqué ça risque de ne pas être performant

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Ok merci pour ton aide,

    je vais donc contacter leur DBA et lui exposer mon problème.

    Je reviendrai pour raconter la suite de ce trépidant problème

    Tsuna

Discussions similaires

  1. [OOo Base] recherche du caractère * dans un champ
    Par bravojr dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/11/2010, 18h08
  2. Réponses: 2
    Dernier message: 08/10/2009, 13h42
  3. LIKE dans un champ de type LONG
    Par seurjer dans le forum SQL
    Réponses: 6
    Dernier message: 15/01/2009, 17h57
  4. recherche du caractère * dans un champ texte
    Par marechal dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/07/2007, 16h37
  5. [DAO]type non défini / recherche valeur max dans un champ
    Par petitours dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 23/04/2007, 09h59

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