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 :

Convert : Conversion impossible


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Convert : Conversion impossible
    Bonjour,

    je voudrais être en mesure de permettre cette requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT dateNaissance FROM Client WHERE dateNaissance=CONVERT(Int, 'ddd')
    Mais cela donne cette erreur :
    Msg*245, Niveau*16, État*1, Ligne*1
    Conversion failed when converting the varchar value 'ddd' to data type int.

    Donc quoi faire pour que cela puisse être possible

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Vous cherchez à convertir la chaine de caractère 'ddd' en entier, ça vous étonne que ça plante?
    Comment voulez-vous convertir votre date de naissance en entier ? En jour, en mois par rapport à une date de référence ?
    Allez jeter un œil dans le BOL : http://msdn.microsoft.com/en-us/libr...SQL.90%29.aspx

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    En fait ce n'est qu'un exemple, 'ddd' pourrait être une date ou même un entier, ce que je cherche à faire c'est que s'il n'est pas capable de convertir qu'il retourne une valeur valide pour éviter que ça plante.

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Il faut donc tester votre paramètre avant de le convertir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARE @dateNaissance VARCHAR(50);
     
    IF ISNUMERIC(@dateNaissance) = 1
     SELECT dateNaissance FROM Client WHERE dateNaissance = CAST(@dateNaissance AS INT)
    ELSE
    ....
    ou mieux peut être

    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
     
    DECLARE @dateNaissance VARCHAR(50) = 'DDD';
     
    DECLARE @t TABLE
    (
     id INT,
     dateNaissance INT
    );
     
    INSERT @t VALUES (1,19000101);
    INSERT @t VALUES (2,19781010);
     
    SELECT *
    FROM @t
    WHERE dateNaissance = CASE ISNUMERIC(@dateNaissance) 
                                      WHEN 1 THEN @dateNaissance
    		         ELSE 19000101    
    		        END;
    Cependant permettez moi de vous demander quelle est l'idée derrière tout cela ? Que voulez vous faire exactement ? (Avec un exemple concret)

    ++

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 865
    Points : 53 021
    Points
    53 021
    Billets dans le blog
    6
    Par défaut
    Ou ISDATE()

    A +

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Merci mikedavem de ta réponse je vais l’essayer de ce pas.

    Ce que je veux faire c'est une recherche dans la bd à partir d'un programme que je code en C# .NET. Je veux pouvoir chercher des mots ou des nombre (durée pour être plus précis)

    Ceci est ma requête non fonctionnel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    duree=CONVERT(Int, @chaineARecherche) OR" +
                "noCategorieArticleSport IN (SELECT noCategorieArticleSport FROM CategorieArticleSport WHERE descriptionEn LIKE '%'+@chaineARecherche+'%') OR " +
                "noGroupeAge IN (SELECT noGroupeAge FROM GroupeAge WHERE descriptionEn LIKE '%'+@chaineARecherche+'%'

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/11/2014, 13h22
  2. Conversion impossible std::pair
    Par quidimi dans le forum Langage
    Réponses: 17
    Dernier message: 18/03/2013, 18h20
  3. Conversion impossible vb6
    Par jeremm dans le forum VB.NET
    Réponses: 8
    Dernier message: 02/04/2011, 15h05
  4. Conversion impossible 4D V6 vers 40 V11
    Par Vincent Heude dans le forum 4D
    Réponses: 4
    Dernier message: 02/09/2009, 15h04
  5. Conversion impossible pixel en cm ???
    Par kgb1917 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 19/12/2008, 10h53

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