OVH Cloud OVH Cloud

recherche une chaine de caracteres mais ...

4 réponses
Avatar
christophe
Bonjour,


voila je fais une petite procedure qui doit rechercher dans la base.
Seulement j'aimerais ..

quand l'utilisateur rentre par exemple
ixus canon

que cela retrouve les fiches qui ont :
IXUS
CANON
IXUS CANON
CANON IXUS

or je ne vois pas trop comment faire
j'ai bien tenté
%ixus%canon%

mais ca marche pô !!

4 réponses

Avatar
Laurent Moreau
SELECT *
FROM fiches
WHERE Champ LIKE '%IXUS%' OR Champ LIKE '%CANON%'


Laurent.



"christophe" wrote in message
news:%
Bonjour,


voila je fais une petite procedure qui doit rechercher dans la base.
Seulement j'aimerais ..

quand l'utilisateur rentre par exemple
ixus canon

que cela retrouve les fiches qui ont :
IXUS
CANON
IXUS CANON
CANON IXUS

or je ne vois pas trop comment faire
j'ai bien tenté
%ixus%canon%

mais ca marche pô !!






Avatar
christophe
oui merci,

mais le probleme c'est que je ne connais pas le nombre d'espace avant.
Donc je ne construit pas ma requete en fonction se qui s'avererais penible,
long et encore plus couteux en temps de recherche !!

y'a pas une syntaxe particuliere avec le like ? ou une autre methode ?




"Laurent Moreau" a écrit dans le message
de news:ccgit6$184$
SELECT *
FROM fiches
WHERE Champ LIKE '%IXUS%' OR Champ LIKE '%CANON%'


Laurent.



"christophe" wrote in message
news:%
> Bonjour,
>
>
> voila je fais une petite procedure qui doit rechercher dans la base.
> Seulement j'aimerais ..
>
> quand l'utilisateur rentre par exemple
> ixus canon
>
> que cela retrouve les fiches qui ont :
> IXUS
> CANON
> IXUS CANON
> CANON IXUS
>
> or je ne vois pas trop comment faire
> j'ai bien tenté
> %ixus%canon%
>
> mais ca marche pô !!
>
>
>
>




Avatar
Sylvain Lafontaine
La signification du métacaractère % signifie: 0, 1 ou plusieurs caractères
quelconques. L'exemple fourni par Laurent M. va donc fonctionner quelque
soit le nombre de caractères ou d'espace avant.

S. L.

"christophe" wrote in message
news:
oui merci,

mais le probleme c'est que je ne connais pas le nombre d'espace avant.
Donc je ne construit pas ma requete en fonction se qui s'avererais


penible,
long et encore plus couteux en temps de recherche !!

y'a pas une syntaxe particuliere avec le like ? ou une autre methode ?




"Laurent Moreau" a écrit dans le


message
de news:ccgit6$184$
> SELECT *
> FROM fiches
> WHERE Champ LIKE '%IXUS%' OR Champ LIKE '%CANON%'
>
>
> Laurent.
>
>
>
> "christophe" wrote in message
> news:%
> > Bonjour,
> >
> >
> > voila je fais une petite procedure qui doit rechercher dans la base.
> > Seulement j'aimerais ..
> >
> > quand l'utilisateur rentre par exemple
> > ixus canon
> >
> > que cela retrouve les fiches qui ont :
> > IXUS
> > CANON
> > IXUS CANON
> > CANON IXUS
> >
> > or je ne vois pas trop comment faire
> > j'ai bien tenté
> > %ixus%canon%
> >
> > mais ca marche pô !!
> >
> >
> >
> >
>
>




Avatar
Bonjour,

en fait si je comprends bien votre problème c'est de splitter la chaine de
caractère passée par l'utilisateur et d'utiliser ensuite chaque mots comme
critères de recherche.

on peut peu être utiliser les fonctions de chaine de caractère voilà mon
idée mais il est clair qu'il faudra l'améliorer cela dit si ça vous aide
dans votre démarche


declare @tempvar nvarchar(250)
declare @varun nvarchar(250)
declare @vardeux nvarchar(250)
set @tempvar= ltrim(rtrim('IXUS CANON')) -- suppression des espaces de
gauche et de droite

set @varun = ltrim(rtrim(left(@tempvar,(charindex(' ', @tempvar,1))) )) --
récupère la partie gauche de la valeur saisie jusqu'au premier espace
charindex renvoi la position de ' ' dans la chaine ce qui doit correspondre
aussi au nombre de caractères

set @varun = '%'+@varun+'%' -- on met les %

set @vardeux= ltrim(rtrim(substring (@tempvar, charindex(' ',@tempvar,
charindex(' ' ,@tempvar,1)+1), len(@tempvar)-charindex(' ' , @tempvar,1))))

set @vardeux='%' + @vardeux + '%'

select from Matable where Champ like @varun or champ like @vardeux


plutot laborieux je trouve en plus on ne sait pas forcément le nombre de
mots à extraire

A voir aussi peut être plus simple la recherche de texte intégral

Sebastien


"christophe" a écrit dans le message de
news:%
Bonjour,


voila je fais une petite procedure qui doit rechercher dans la base.
Seulement j'aimerais ..

quand l'utilisateur rentre par exemple
ixus canon

que cela retrouve les fiches qui ont :
IXUS
CANON
IXUS CANON
CANON IXUS

or je ne vois pas trop comment faire
j'ai bien tenté
%ixus%canon%

mais ca marche pô !!