Bonjour à tous
J'ai un truc un peu balaise à faire dans une requête et je ne sais pas du tout par où chercher une solution. Du coup je suis même ennuyé pour fournir un jeu d'enregistrement.
Le principe est le suivant : j'ai une table qui contient des données dont un champ appelé Keyword. Ce champ contient des chaines. Ces chaines sont composées de mot séparés par des virgules.
En paramettre j'envoi une chaine composée aussi de mot séparés par des virgules.
Je doit comparer chaque mot de la chaine avec chaque mot des chaines de chaque enregistrement dans le champ Keyword et retourner chaque enregistrement qui contient au moins un des mots de la liste en paramettre.
Pour l'instant j'ai pris le parti de passer par une fonction et j'ai construit ma requête comme suit :
Et la fonction ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DECLARE @keywordsearch VARCHAR(200) SET @keywordsearch = 'moto' SELECT dbo.motcle(Keyword,@keywordsearch) AS Occu,* FROM dbo.Gig WHERE dbo.motcle(Keyword,@keywordsearch) > 0
Donc à chaque fois qu'il y a le mot 'moto' dans le champ Keyword cela me retourn 1, donc l'enregistrement. Mais le mot 'moto' est parfois accompagné d'autres mot et là, ça ne sort pas.
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 ALTER FUNCTION dbo.motcle ( @keyword VARCHAR(200), @keywordsearch VARCHAR(200) ) RETURNS INT AS BEGIN DECLARE @Occurence INT IF @keyword = @keywordsearch SET @Occurence = 1 ELSE SET @Occurence = 0 RETURN @Occurence END
Voilà mon souci, je ne sais pas dans quelle direction chercher pour découper les chaines et les comparer.
Pouvez vous m'aider ?
Partager