|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mai 2003 Messages : 140 ![]() |
Bonjour,
Je souhaite effectuer une recherche afin de me positionner dessus (grâce à la fonction locate du TIBDataSet) sur un champ de type CHAR(50). Le champ dans ma BD comporte mon texte + des blancs (pour arriver a une taille de 50), ce qui n'a rien d'inhabituelle, cependant lorsque j'effectue ma recherche je passe a la fonction locate la chaîne recherché sans les blancs et la il ne me trouve pas ma chaîne alors que si je recherche ma chaîne en y ajoutant les blancs cela fonctionne. Mes questions sont les suivantes: - Existe t'il une méthode pour effectuer une recherche sur une chaîne sans devoir y rajouter les blancs - Est t'il possible de se passer de la fonction locate (très lente), pour obtenir le même résultat que cette dernière. Merci d’avance, |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Je suppose que vous parlez des blancs en fin de chaine ?
CHAR(50) est une chaine de 50 caractères donc si vous y mettez que un seul caractère il va compléter par 49 espaces. Si vous aviez utiliser plutot un VARCHAR(50) alors là il ne compléte pas avec des espaces à la fin... (Mais il peux y en avoir si vous enregistrez une chaine qui comporte des espaces à la fin...) Voilà maintenant en ce qui concerne locate, l'inconvéniant de celui ci c'est qu'il me semble que le traitement se fait en locale et donc si vous avez une grosse table, celle ci va devoir transiter entièrement via le réseau. D'un point de vue performance un select avec un where adapté sera certainement plus performant. |
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : mai 2003 Messages : 140 ![]() |
Oui effectivement les blancs correspondent au caractère espace.
Je conçois qu'une requête serait bien plus rapide, cependant le TIBDataSet ne sera pas positionné sur le bon enregistrement ?? Mon code ressemble un peu a celui la: Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
Relisez ma remarque sur la différence entre CHAR et VARCHAR pour mieux comprendre votre problème. En ce qui concerne le second point (la question performance) : Citation:
C'est pas tout à fait la même chose que le locate (qui se positionne sur un enregistrement), c'est du filtrage donc si vous ne voulez pas filtrer mais vous positionnez utilisez locate en effet. |
||
|
|
00
|
|
|
#5 | |
|
Membre du Club
![]() Inscription : mai 2003 Messages : 140 ![]() |
Citation:
Dans tous les cas je ne cherche pas à effectuer un Filtre mais bien me positionner sur l'enregistrement. Donc Locate obligatoire Merci. Bonne nu.. euh non journée !! |
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Et donc utilisez un varchar plutot qu'un char pour vous éviter de devoir completer vos chaines de recherche par des espaces en fin.
PS : Espace = blanc on est d'accords ... |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : mai 2003 Messages : 140 ![]() |
Merci
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com