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

VB.NET Discussion :

SQL SELECT probleme avec LIKE


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 9
    Points : 6
    Points
    6
    Par défaut SQL SELECT probleme avec LIKE
    Bonjour,

    Je souhaite faire un requête SQL dans une table qui contient des champs avec ce format : 24/06/2013 08:13

    si je fait ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private da As New SqlDataAdapter("SELECT * FROM matable WHERE TSTAMP = '% " & 24 & " %'", sql)
    ca fonctionne bien il trouve tous ce qui commence par 24

    mais si je fait ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private da As New SqlDataAdapter("SELECT * FROM ACDCAMPAIGN WHERE TSTAMP = '% " & 24/06 & " %'", sql)
    Cela ne fonctionne pas, il n'aime pas le "/"

    Est ce que quelqu'un peu m'aider ??

    Merci d'avance.

    Cdt.

    matth59

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Quel est le type de donnée de ta colonne TSTAMP ?
    Kropernic

  3. #3
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Ton titre évoque "Like" mais je ne le vois pas dans ton code ...
    Et pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TSTAMP = '% " & 24 & " %'"
    au lieu de
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Je vois déjà trois problèmes :
    - tu utilises un égal = au lieu du mot clef LIKE.
    - tu mets une date directement (24 ou 24/06), alors qu'il faudrait d'abord mettre ta date dans une variable, puis la concaténer dans ta requête.

    Et le meilleur pour la fin La concaténation de données dans la requête est une très mauvaise habitude, il vaut mieux utiliser des requêtes paramétrées.

    [EDIT] oops grillé par _Ez3kiel
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 9
    Points : 6
    Points
    6
    Par défaut effectivement
    Effectivement, erreur de copier coller, voila le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private da As New SqlDataAdapter("SELECT * FROM MATABLE WHERE TSTAMP LIKE '% " & 24 & " %'", sql)

    La colonne TSTAMP est au format Datetime
    J'avais essayer de mettre la date dans une variable mais rien ne change.

    Concatener ? je ne sais pas comment faire.

    Merci

    matth59

  6. #6
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Concaténer c'est mettre bout à bout des chaînes ou des variables pour n'en former qu'une seule.

    Tu concatènes en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM MATABLE WHERE TSTAMP LIKE '% " & 24 & " %'"

    L'idéal serait comme l'a dit @DotNetMatt, d'utiliser les requêtes paramétrée.

    Mais sinon si tu passes en variable ça devrait marcher. (Dans ton code les % ont respectivement un espace entre le % et la date, il faut les coller, sinon il cherchera des dates qui ont aussi un espace)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim da As New SqlDataAdapter("SELECT * FROM MATABLE WHERE TSTAMP LIKE '%" & dateTest & "%'", Sql)
     
            Dim dateTest As String = "24/6"

    MAIS, je reste d'avis que les requêtes paramétrées c'est mieux, c'est plus propre, c'est évolutif, c'est plus maintenable, moins de soucis de typages, etc etc.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  7. #7
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Mais de toute façon, que ce soit l'un ou l'autre, utiliser l'opérateur LIKE sur colonne de type DATETIME, c'est mal.

    Ca va fonctionner dans la plupart des cas (car le serveur est gentil et fait les conversions pour toi) mais c'est mieux d'utiliser directement la bonne méthode avec la fonction DATEPART.

    Exemple d'une clause WHERE où on veut les dates dont le numéro du jour est 24.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE DATEPART(DAY,TSTAMP) = 24

    Et le lien pour tout savoir sur cette fonction fort utile.
    Kropernic

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Ok ok je comprend

    quand j'utilise ton code Kropernic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE DATEPART(DAY,TSTAMP) = 24
    J'ai bien le même résultat qu'avec LIKE, comment si je veux recherche pour la date du 24/06 par exemple?

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    A ce moment, tu veux que le jour soit égal à 24 et que le mois soit égale à 6.

    donc...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE DATEPART(DAY,TSTAMP)=24
        AND DATEPART(MONTH,TSTAMP)=6

    Mais si tu avais été voir le lien que j'ai donné dans mon message précédent, tu aurais eu ta réponse tout de suite.
    Kropernic

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci bcp

    Désolé je n'avais pas vue le lien.

    Encore merci

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

Discussions similaires

  1. Probleme SQL dans Adoquery avec like
    Par zanoubya dans le forum Débuter
    Réponses: 3
    Dernier message: 02/01/2009, 19h34
  2. [PL/SQL] SELECT INTO avec type TABLE
    Par Kaejar dans le forum Oracle
    Réponses: 13
    Dernier message: 06/07/2006, 17h17
  3. [SQL Server] Problèmes avec un WHERE
    Par Epervier dans le forum Langage SQL
    Réponses: 1
    Dernier message: 08/06/2006, 22h21
  4. [SQL Server] Probleme avec not exists
    Par maxxou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/03/2006, 17h51
  5. Probleme avec LIKE
    Par Death83 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/12/2005, 19h56

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