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

MS SQL Server Discussion :

[SQL Server 2000] Caractere non toléré


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut [SQL Server 2000] Caractere non toléré
    Bonjour à tous,

    Je ne suis pas certain que mon probleme concerne directement sql server : / mais bon je tente le coup.
    j'ai le probleme suivant : j'ai une colonne nvarchar qui contient apparemment des caracteres invisibles non tolérés (unicode mal géré apparemment).
    Effectivement, quand je cast ma colonne en varbinary je trouve

    0x45006D0070006C006F0079006500650028007300290020003A00200000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F000000070000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F000000070000003F0000003F0000003F00

    Donc ma chaîne est mal terminée ce qui me génère des erreurs.
    Mais comment repérer le probleme dans la chaîne ? comment trouver quoi supprimer ?

    Si à défaut vous pouvez m'aiguiller sur un site ou autre qui pourrait m'aider je suis preneur :'(

    Merci d'avance !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Par défaut
    Si tu veux retirer des caractères indésirables dans ta chaine, il y a un méthode simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE table1
    SET ch1=REPLACE(ch1,CHAR(10),'')
    La fonction CHAR renvoie le caractère demander en fonction du code ASCII passer en paramètre. Je ne sais pas si c'est la meilleure méthode mais c'est une option.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Certes, merci de ta réponse ^^
    Mais justement je ne connais pas le caractère indésirable ! je le traque ce fourbe ! Mais je n'arrive pas à le voir pour l'instant : /

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Par défaut
    Ce que tu peux faire c'est une procédure te renvoyant les codes ASCII des caractères invisibles.
    A patir d'une table ASCII, tu peux avoir l'intervalledes caractères invisibles.
    Ensuite tu crées une procédure qui boucle dans cet intervalle et qui renvoie la valeur du caractyère invisible trouver ainsi que sa position.
    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
     
    CREATE PROCEDURE maProc
    AS
    DECLARE @carac VARCHAR(1)
    DECLARE @val INT
    SET @val=10
    SET @carac = CHAR(@val) //code ASCII du premier caractère invisible
    WHILE @carac <> CHAR(65) //code ASCII du premier caractère visible
    BEGIN
    rechcerche du carcatère
    si trouvé 
    retour des valeurs.
    Sinon
    SET @val =@val +1 
    SET @carac = CHAR(@val)
    END
    GO

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Ok je vais essayer de bidouiller un truc dans ce sens, merci de ton aide !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    alors apres recherche un peu plus poussée, dans toutes mes lignes à probleme, la colonne vicieuse est "paddée" avec cette suite de caracteres :
    00003F00
    Savez vous si cela correspond à un padding standard SQL ou quelque chose dans le genre ?
    m'étonnerait fortement mais bon je prefere être sûr avant de virer cette chaîne dans tous mes enregistrements.
    Ca correspond peut etre à un caractere asiatique quelconque puisque je suis en unicode ^^ (donc d'ailleurs si je suis en unicode ma véritable chaîne serait 003F simplement)

Discussions similaires

  1. [SQL SERVER 2000] Base de donnée non relationnelle
    Par Phenomenium dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 31/03/2008, 10h39
  2. SQL Server 2000 :demarrage non-administrateur
    Par maxtin dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 23/07/2007, 16h16
  3. [SQL Server 2000] Extraction dans une chaine de caracteres
    Par KOFJCH dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/10/2006, 09h28
  4. Réponses: 9
    Dernier message: 28/07/2006, 17h38
  5. fonction utilisateur non reconue par sql server 2000
    Par ouedmouss dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/09/2005, 07h46

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