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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    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
    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
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

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

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

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    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

  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 : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    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
    Membre habitué
    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
    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 Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    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.

  7. #7
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    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.

+ 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, 18h34
  2. [PL/SQL] SELECT INTO avec type TABLE
    Par Kaejar dans le forum Oracle
    Réponses: 13
    Dernier message: 06/07/2006, 16h17
  3. [SQL Server] Problèmes avec un WHERE
    Par Epervier dans le forum Langage SQL
    Réponses: 1
    Dernier message: 08/06/2006, 21h21
  4. [SQL Server] Probleme avec not exists
    Par maxxou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/03/2006, 16h51
  5. Probleme avec LIKE
    Par Death83 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/12/2005, 18h56

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