198 messaggi dal 08 luglio 2008
Ciao a tutti,

ho la necessita in un catalogo prodotti fatto in sql server e asp.net di far ricercare uno o piu termini all'utente.

Quello che vorrei fare è:

se l'utente cerca: bicchiere plastica biodegradabile, la query ricerchi tutti i prodotti che nella descrizione abbiano questo termine ma anche non esattamente nell'ordine scritto (quindi anche bicchiere biodegradabile, o, plastica biodegradabile bicchiere...), l'importante però che ci siano tutti i termini (quindi non vanno prelevati i prodotti che contengono solo la parola bicchiere, o plastica...)

come posso fare?

grazie
652 messaggi dal 12 maggio 2001
www.idioteca.it
Prova a cercare informazioni sulla ricerca full-text e in particolare sui predicati FREETEXT e CONTAINS.
ciao
198 messaggi dal 08 luglio 2008
e se usassi una sintassi del genere?
...where descrizioneProdotto like '%bicchieri%' AND descrizioneProdotto like '%plastica%' descrizioneProdotto like '%biodegradabili%'
salve,
webbondo wrote:
e se usassi una sintassi del genere?
..where descrizioneProdotto like '%bicchieri%' AND descrizioneProdotto like '%plastica%' descrizioneProdotto like '%biodegradabili%'

si, la ricerca incontra la tua richiesta specifica, anche se ovviamente i filtri in LIKE sono pesanti..
saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de
198 messaggi dal 08 luglio 2008
grazie per la risposta, ma come faccio ad ottenere una sintassi del genere usando i sqlparameter? (non vorrei espormi usando la classica concatenazione di stringhe che potrebbero dare luogo a sql injection...)

grazie
salve,
codice comunque dinamico o stored procedure?
nel primo caso non ci sono ovviamente problemi, generi il comando e carichi gli opportuni parametri, mentre nel secondo caso il problema iniziale dipende dalla "profondita'" dei parametri... quanti ne "vuoi permettere"?? 5? 10? ...? perche'? :)
ed in tali condizioni le performance diminuiscono ulteriormente in quanto devi scontrarti con il problema di confronto, per ogni parametro possibile, simile a
WHERE ...
AND ( column LIKE @parameter OR @parameter IS NULL )
AND .......
che appesantisce ulteriormente il tutto degradando le prestazioni...
in ogni caso sei fortemente invitato a leggere l'articolo che l'amico Erland Sommarskog ha pubblicato in proposito presso http://www.sommarskog.se/dyn-search.html
saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de
42 messaggi dal 13 settembre 2007
Nel caso volessi usare una stored, per chiarirti un po le idee ti posto un mini esempio :
declare @param as varchar(50)
set @param  = 'pp'
declare  @ta table(valore varchar(500))
insert into @ta values('pippo')
insert into @ta values('pluto')
insert into @ta values('paperino')

select  *
from  @ta
where  valore like '%' + @param + '%'


La sintassi è la seguente:
valore like '%' + @param + '%'


Come si diceva prima, il LIKE è abbastanza pesante, e se effettui paragoni su più parametri, ancora peggio...
Non riesci proprio ad utilizzare una alternativa?

Ciao
198 messaggi dal 08 luglio 2008
non uso stored ma una stringa sql usando i sql parameter come parametri. E proprio qui non riesco a capire una cosa.

Se il l'utente cerca "bicchieri plastica" io vorrei creare una sql del genere:

select * from prodotti where nome like '%bicchieri%' and nome like 'plastica'

io con i sql parameter come posso fare?

dovrei creare del sqlparameter dinamici cioe:

- ricevo la stringa di ricerca
- splitto per lo spazio
- per ogni elemento trovato dopo lo split creo un sqlparameter per ognuno
- aggancio i nuovi sqlparameter all'oggetto command
- lancio la query

come posso fare per aggiungere dinamicamente tanti sqlparameter quanti sono gli elementi trovati nella stringa di ricerca?

grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC