Moteur de recherche multi-mots avec une procédure stockée

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 037 fois - Téléchargée 31 fois

Contenu du snippet

Cette procédure permet de recherche des infos dans une base de données en entrant plusieurs mots clés ça peut être utile des fois

Source / Exemple :


CREATE procedure RechercheMultiMots
	@Test as varchar(200)
as

Declare @Reste varchar(200)
Declare @strSQL varchar(200)
Declare @Mots as varchar (200)

SET @Mots = ''
SET @strSQL = 'SELECT * FROM callTender WHERE'
SET @Reste = @Test

if (select CHARINDEX(' ',@Reste,1))>0

	select @Reste = (select RTRIM((select LTRIM(@Reste))))

while (@Reste != @Mots)
begin
	if (select CHARINDEX(' ',@Reste,1))>1
	begin
		select @Mots = (select SUBSTRING(@Reste,1,CHARINDEX(' ',@Reste,1)))
		select @Reste = (select LTRIM((select SUBSTRING(@Reste,CHARINDEX(' ',@Reste, 1), len(@Reste)))))
		SELECT @strSQL = (@strSQL + ' title LIKE ''%' + @Mots + '%'' AND')
	end
	else
	begin
		set @Mots = @Reste
		SELECT @strSQL = (@strSQL + ' title LIKE ''%' + @Mots + '%''')	
	end
	
	/*print (@strSQL)*/
end

exec (@strSQL)

A voir également

Ajouter un commentaire

Commentaires

Fredon88
Messages postés
8
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
12 juillet 2005
-
Ce precedent code n'est pas à jour voici la mise à jour:

CREATE procedure MapaSearch
@Test as varchar(200) = ''
as

set nocount off


Declare @Reste varchar(200)
Declare @strSQLWHERE varchar(200)
Declare @Mots varchar(200)
Declare @strSQL varchar(200)

SET @Mots = ''
SET @strSQL = 'SELECT Id,Title FROM callTender'
SET @Reste = @Test
SET @strSQLWHERE = ' WHERE'
select @Reste = (select RTRIM((select LTRIM(@Reste))))

while (@Reste != '')
begin
if (select CHARINDEX(' ',@Reste,1))>0
begin
select @Mots = (select SUBSTRING(@Reste,1,CHARINDEX(' ',@Reste,1)))
select @Reste = (select LTRIM((select SUBSTRING(@Reste,CHARINDEX(' ',@Reste, 1), len(@Reste)))))
SELECT @strSQLWHERE = (@strSQLWHERE + ' title LIKE ''%' + @Mots + '%'' AND')
end
else
begin
SELECT @strSQLWHERE = (@strSQLWHERE + ' title LIKE ''%' + @Reste + '%''')
set @Reste = ''
SELECT @strSQL = @strSQL + @strSQLWHERE
end

end
SET @strSQL = @strSQL + ' order by publicationDate desc'
exec (@strSQL)


GO
RM50Man
Messages postés
314
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
20 août 2006
-
C koi commme code c du mysql
je savais pas qu on pouvait utiliser les is et les tant que avec du sql
Fredon88
Messages postés
8
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
12 juillet 2005
-
non ce n'est que du SQL Server 2000, de plus tu ne pourra créer des procédures stockées dans Mysql qu'a partir de la version 5 que je n'ai pas encore utilisé bien qu'elle soit déjà sorti en version beta

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.