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 :
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
Et la fonction ressemble à ça :
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
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.

Voilà mon souci, je ne sais pas dans quelle direction chercher pour découper les chaines et les comparer.

Pouvez vous m'aider ?