|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : septembre 2002 Messages : 138 ![]() |
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 :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
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...) |
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : septembre 2002 Messages : 138 ![]() |
Bonjour aieeuuuuu,
Moi non plus je n'arrive pas a comprendre ce qui bloque. Voici la requete sans les variables : Code :
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 |
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
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... |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2002 Messages : 138 ![]() |
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. |
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Quel est le type de la colonne ?
est-elle nullable ? Citation:
|
|
|
|
00
|
|
|
#7 | ||
|
Nouveau Membre du Club
![]() Inscription : septembre 2002 Messages : 138 ![]() |
Alors proprietes de mon champ "amount" de ma table
Amount(decimal(38,20), non NULL) Si j'utilise la requete ci jointe : Code :
Comment dois je faire pour obtenir le meme resultat en modifiant : 3538.36 en variable @Montant et VIR en variable @Libelle Et qui plus est en donnant la possibilite de ne renseigner qu'une partie de la variable comme : "353%" => @Montant au lieu de "3538.36" "%VIR%" => @Libelle au lieu de "VIR CHATELET" J'espere etre clair MERCI |
||
|
|
00
|
|
|
#8 | |||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
en utilisant un like derrière, c'est ce qui provoque votre problème ! Vous pouvez déjà faire comme ceci pour la colonne [name] Code SQL :
Sachez cependant que ce type de prédicate est couteux, car le moteur ne peut pas utiliser les index. pour ce qui est du montant, j'ai du mal a comprendre l'interet de ce type de recherche. Avec votre exemple ('353%'), cela sortira : 1/ 3538.36 --> ce que vous voulez mais aussi : 2/ 353 3/ 353.456 4/ 3532268 5/... Est-ce vraiment ce que vous voulez ? Dans ce cas vous pouvez transtyper votre decimal (Amount) en varchar puis comparer avec un LIKE, mais la encore, ce sera couteux, pour les mêmes raisons ! Une recherche sur la partie entière par exemple pourrait être bien plus performante ! |
|||
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2002 Messages : 138 ![]() |
merci pour votre aide.
L'interet de cette recherche c'est de trouver dans une colonne de nombres , les nombres qui contiennent la partie qui est defini dans notre variable. Comme vous l'avez bien resumé dans votre tableau avec la partie "353" qui peut se trouver en debut ou en fin ou au milieu d'un nombre. |
|
|
00
|
|
|
#10 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
également en milieu ou en fin d'un nombre ?!?
alors effectivement je ne vois pas d'autre solution que de déclarer @Montant en varchar(41), et de faire : Code SQL :
Mais... c'est moche
|
||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com