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 :

Trim sur champ indexé


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut Trim sur champ indexé
    Salut à tous,

    J'ai quelques difficultés à mettre en pratique la fonction Trim de sql. J'utilise Oracle 10g.
    J'ai une table avec un champs indexé de type varchar2(20). l'utilisateur insère des donnée dans cette colonne de moins de 20 caractère, après il met à jour cette colonne avec 16 à 20 caractères.
    Je rencontre des problème lors de la mise à jour de ce champ. Par exemple si le champ comporte 2, et si je dois mettre à jour ce champ avec cette requête aucune ligne n'est mise à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     update materiel set dm_numero = '081/09/DRCO/KDG' where dm_numero = '2'
    Mais si je complète le 2 avec 19 espace ca marche. J'ai fais des recherches et il se trouve que je dois utiliser Trim. J'ai fais ceci sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    update demande set dm_numero = '081/09/DRCO/KDG' where dm_numero = trim('2');
    0 rows updated.
    avec ltrim et rtrim sans succès. Je me tourne vers vous pour avoir des éclaircissements.
    Merci pour toutes interventions.

  2. #2
    Membre expérimenté
    Inscrit en
    Janvier 2009
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 162
    Par défaut
    bonjour,

    as-tu essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE materiel SET dm_numero = '081/09/DRCO/KDG' WHERE dm_numero like '%2%';
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE materiel SET dm_numero = '081/09/DRCO/KDG' WHERE dm_numero = lpad ('2',' ',20);

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par sondo Voir le message
    J'ai fais ceci sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    update demande set dm_numero = '081/09/DRCO/KDG' where dm_numero = trim('2');
    0 rows updated.
    C'est parce que vous le faites à l'envers, il faut trimer la colonne et non la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update demande set dm_numero = '081/09/DRCO/KDG' where trim(dm_numero) = '2';

  4. #4
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut
    Salut,

    Merci pour votre aide. Les choses sont rentré dans l'ordre tout seul. J'ai supprimer les données dans la table et j'ai essayé une nouvelle fois d'insérer des données, et de faire usage de cette même requête et ça marché. Je ne sais pas trop pourquoi.
    Merci à vous.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par sondo Voir le message
    Je ne sais pas trop pourquoi.
    C'est dommage que vous recommenciez tout sans essayer de comprendre votre erreur, que vous recommetterez ailleurs si vous ne faites pas cet effort.

  6. #6
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut
    Vous avez bien raison. Je vais chercher ou se trouve le problème.
    Je fais mes insertions dans la table par Delphi. Je vais chercher de ce coté là.
    Voici un exemple :
    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
          Demande.Append;
          Demande.Edit;
          Demande.FieldByName('DM_NUMERO').Value := Edit1.Text;
          Demande.FieldByName('DM_DATE').Value := FormatDateTime('DD/MM/YYYY',DateTimePicker1.date);
          Demande.FieldByName('DM_FOUR').Value := Edit2.Text;
          Demande.FieldByName('DM_JUST').Value := Edit5.Text;
          Demande.FieldByName('DM_IMP').Value := Edit4.Text;
          Demande.FieldByName('DM_BENEF').Value := Edit3.Text;
          Demande.FieldByName('DM_SIG1').Value := dm_sig1;
          Demande.FieldByName('DM_SIG2').Value := dm_sig2;
          Demande.FieldByName('DM_SIG3').Value := dm_sig3;
          Demande.FieldByName('DM_SIG4').Value := dm_sig4;
          Demande.FieldByName('DM_SIG5').Value := dm_sig5;
          Demande.FieldByName('DM_SIG3_D').Value := dm_sig3_d;
          Demande.FieldByName('DM_SIG3_V').Value := dm_sig3_v;
          Demande.FieldByName('DM_SIG4_D').Value := dm_sig4_d;
          Demande.FieldByName('DM_SIG4_V').Value := dm_sig4_v;
          Demande.FieldByName('DM_SIG5_D').Value := dm_sig5_d;
          Demande.FieldByName('DM_SIG5_V').Value := dm_sig5_v;
          Demande.FieldByName('DM_SIT').Value := 'N';
          Demande.Post;
    Et c'est souvent cette ligne en bleu qui cause problème comme indiqué dans mes message précédents.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Syntaxe indirection sur champ indexé et lignes de table.
    Par Xipotera dans le forum WinDev
    Réponses: 10
    Dernier message: 13/08/2014, 10h16
  2. Erreur sur champ text pour un index Full-Text
    Par Steph82 dans le forum Outils
    Réponses: 5
    Dernier message: 06/01/2011, 14h08
  3. Problème d'index sur champ
    Par acrobaz dans le forum 4D
    Réponses: 1
    Dernier message: 16/10/2008, 21h10
  4. Index sur champs float
    Par tiboel dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/02/2008, 12h22
  5. Index full text sur champs multiples
    Par manu_71 dans le forum Outils
    Réponses: 6
    Dernier message: 22/02/2007, 00h41

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