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

Développement SQL Server Discussion :

Probleme avec Like et une variable


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut Probleme avec Like et une variable
    Bonjour,
    J'ai cette requete qui ne trouve aucun resultat, alors que je sais qu'elle existe la reponse car si je l'essaye sans variable je trouve mes ecritures , et si je remplace les valeurs par des variables , la requete ne retourne rien. Pouvez vous me dire ou je me suis trompé :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    declare @Montant as float
    declare @Libelle as varchar(20)
    declare @Libelle2 as varchar(20)
     
    set @Montant = '3538.36'
    set @Libelle = 'VIR'
     
    select @libelle2 = +'%' +@libelle +'%';
    select
    	t1.[Cust_ Ledger Entry No_] as sequence,
    	T3.[Document No_],
     
    	case
    		when (T3.[N° Affaire]) = '' then T3.[No Affaire]
    		end as Affaire,
     
    	convert(char(10),T1.[Posting Date],103) as Date,
    	t1.[Initial Entry Global Dim_ 1] as Agence,
    	t1.[Customer No_] as Num_Client,
    	t2.[Name] as Noms_Client,
    	cast(t1.Amount as decimal(18,2)) as Montant_TTC
    from dbo.[societe$Detailed Cust_ Ledg_ Entry] t1
    	inner join dbo.[societe$Customer] t2
    	on t2.No_ = t1.[Customer No_] 
    		inner join dbo.[societe$Cust_ Ledger Entry] T3
    		on T3.[Entry No_] = t1.[Cust_ Ledger Entry No_]
    			where t1.Amount like @Montant
    			and t2.[Name] like @Libelle2
    order by T1.[Posting Date] desc
    MERCI

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    première chose, les type numériques se passent de quote :
    écrivez plutot SET @Montant = 3538.36deuxième chose, sur le plan théorique, @libele2 devrait etre un VARCHAR(22), afin de pouvoir contenir les deux "%" dans le cas où @Libelle ferait 20 caractéres...

    Mais ces deux points ne devraient toutefois pas poser de problème ici, puisque pour le premier, il y a un transtypage implicite, et pour le second, "VIR" ne fait que trois lettres...

    Et à vrai dire, je ne vois pas d'où peut provenir votre problème

    pouvez vous nous montrer également votre requête "sans variables" ?
    et éventuellement le résultat qu'elle fournit (au moins quelques lignes...)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut
    Bonjour aieeuuuuu,
    Moi non plus je n'arrive pas a comprendre ce qui bloque. Voici la requete sans les variables :

    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
    19
    20
    21
    select
    				t1.[Cust_ Ledger Entry No_] as sequence,
    				T3.[Document No_],
     
    				case
    				when (T3.[N° Affaire]) = '' then T3.[No de Commande Affaire]
    				end as Affaire,
     
    				convert(char(10),T1.[Posting Date],103) as Date,
    				t1.[Initial Entry Global Dim_ 1] as Agence,
    				t1.[Customer No_] as Num_Client,
    				t2.[Name] as Noms_Client,
    				cast(t1.Amount as decimal(18,2)) as Montant_Ouvert_TTC
    			from dbo.[FONDASOL$Detailed Cust_ Ledg_ Entry] t1
    				inner join dbo.[FONDASOL$Customer] t2
    					on t2.No_ = t1.[Customer No_] 
    						inner join dbo.[FONDASOL$Cust_ Ledger Entry] T3
    							on T3.[Entry No_] = t1.[Cust_ Ledger Entry No_]
    			where t1.Amount like '%3235.36%'
    			and t2.[Name] like '%vir%'
    order by T1.[Posting Date] desc

    Voici la ligne de resultat :
    sequence Document No_ Affaire Date Agence Num_Client Noms_Client Montant_Ouvert_TTC
    38 177807 11.0123 27/06/2011 IPE C00731 BRIOCHE CHATELET 3538.36

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour

    Dans votre code avec variables, vous ecrivez VIR en majuscules, dans votre code sans variable, vous l'ecrivez en minuscules... quel est le type t surtout la collation de la colonne t2.[Name] ?

    D'autre part, dans votre code avec variable, je ne vois pas où vous ajoutez les "%" à votre variable @Montant mais surtout je m'interroge : quel est le type de la colonne t1.Amount et pourquoi faire un like '%%' alors que logiquement, cela semble être un nombre...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut
    il s'agit effectivement d'un nombre , j'ai mis % pour si le champ est non renseigné qu'il affiche bien les données avec la deuxieme variable sinon si je ne renseigne pas ce champ il m'indique une erreur.
    Pour les majuscule et minuscule il n'y a pas de soucis il ne tiens pas compte de la casse.

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par backdraf Voir le message
    il s'agit effectivement d'un nombre
    Quel est le type de la colonne ?
    est-elle nullable ?

    , j'ai mis % pour si le champ est non renseigné qu'il affiche bien les données avec la deuxième variable sinon si je ne renseigne pas ce champ il m'indique une erreur.
    je ne comprend pas très bien, un petit exemple serait le bienvenu ! et je ne vois toujours pas l’intérêt des % !!!

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/08/2009, 11h06
  2. [C#] c# - mysql avec LIKE et une variable
    Par korben06 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/06/2006, 23h39
  3. [Debutant] Probleme d'acces a une variable
    Par Bugmaster dans le forum Langage
    Réponses: 16
    Dernier message: 02/09/2004, 15h57
  4. Réponses: 3
    Dernier message: 26/01/2004, 17h59
  5. Réponses: 13
    Dernier message: 14/06/2003, 22h15

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