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

Informix Discussion :

Replace d'une chaine de caractère par un retour chariot


Sujet :

Informix

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Replace d'une chaine de caractère par un retour chariot
    Bonjour,

    j'ai besoin faire des états VB sur une table INFORMIX dans laquelle les retours chariot ont été remplacés par '#@'

    Comment faire pour remplacer les caractères '#@' par un retour chariot ?
    j'ai essayé :
    select replace(ma_colonne,'#@','\n') from ma_table;
    select replace(ma_colonne,'#@','\r\n') from ma_table;

    mais je n'ai le résultat attendu

    Avez vous une idée ?
    Merci d'avance pour votre aide

    Cyrille

  2. #2
    Invité
    Invité(e)
    Par défaut x2d nom-de-fichier
    Bonjour,

    Tu travailles avec Informix sur UNIX ou DOS ?

    Sous UNIX, il peut exister une commande "x2d nom-de-fichier" qui ajoute un "Carriage Return" (ASCII 013) à chaque fin de ligne d'un fichier. Il peut également exister la commande inverse "d2x nom-de-fichier".

    Sinon, je me suis créé un petit shell qui fait la même chose via une commande "sed".

    Je n'ai jamais tenté de mettre un "Carriage Return" dans une table via une requête SQL mais pourquoi pas, après tout. Le problème, c'est que ce caratère ne se voit pas.

    Il faudrait tenter quelque chose comme ça :

    select replace(ma_colonne,'#@','') from ma_table;

    Sachant qu'entre les deux quotes doit se trouver le caractère ASCII "Alt/013".

    Sous DOS/Windows, "Alt/013" n'apparait pas mais sous Unix, il me semble me rappeler qu'il apparait ainsi : "^M".

    Si ça ne marche pas via une requête SQL, tu peux tenter un unload de ta table, placer un "Carriage Return" avant le dernier pipe de chaque ligne (avec "vi") et reloader le fichier unload modifié dans ta table.
    Dernière modification par Invité ; 08/03/2008 à 10h41.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    je travaille sous Windows.
    L'idéal serait d'avoir la solution directement avec une requête SQL.
    Connaissez vous l'équivalent de la commande oracle CHR sous Informix ?

  4. #4
    Invité
    Invité(e)
    Par défaut Carriage Return
    Bonjour,

    Désolé, je ne connais pas Oracle. Avec une requête SQL, je ne vois pas comment remplacer tes caractères "#@". Par contre, il est facile de remplacer un caractère dans une position déterminée d'un champ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    update       ma_table
    set          ma_table.ma_colonne[20] = "
    "
    where        ma_table.ma_colonne is not null;
    Dans le code ci-dessus, j'ai repris la partie de mon shell comportant le caractère "Carriage Return". Tu peux voir que ce caractère existe bien puisqu'il a provoqué un saut de ligne. J'ai recopié cette requête SQL à partir d'un fichier texte que j'ai créé avec Notepad. Sous Notepad, le "Carriage Return" ne provoque pas de saut de ligne, il ne se voit pas mais il existe bien car je dois taper deux fois "Flèche-à-droite" pour déplacer le curseur d'un guillemet à l'autre. J'ai tenté la démarche inverse, c'est-à-dire de recopier la séquence de code ci-dessus dans mon fichier texte mais ça ne marche pas. Là, Notepad me génère un saut de ligne.

    Je te joins mon fichier texte pour te permettre de récupérer éventuellement le caractère "Carriage Return".
    Fichiers attachés Fichiers attachés

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour l'aide mais ça ne fonctionne pas sur l'appli VB que j'utilise. En plus, j'ai vu sur des docs informix que l'équivalent du CHR d'Oracle n'existe pas.

    Au final je vais essayer de contourner le problème...

Discussions similaires

  1. [RegEx] Récupérer une chaine de caractéres par strpos
    Par bdptaki dans le forum Langage
    Réponses: 11
    Dernier message: 21/04/2009, 12h43
  2. Réponses: 1
    Dernier message: 09/02/2009, 00h18
  3. Réponses: 10
    Dernier message: 24/11/2008, 14h14
  4. JSP : comment remplacer une chaine de caractères par une autre
    Par techquos dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/12/2006, 10h37
  5. [RegEx] recherche et replacement dans une chaine de caractère
    Par Ekimasu dans le forum Langage
    Réponses: 5
    Dernier message: 28/11/2006, 22h39

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