Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di jesus
    Registrato dal
    Jan 2002
    Messaggi
    717

    Ricerca per parole intere

    Salve a tutti, ho fatto una ricerca ma non ho trovato quello che cercavo.

    Ho un campo di testo di un DB su cui voglio effettuare una ricerca. Vorrei poter ricercare solo le parole intere.
    Mi spiego meglio. Ad esempio se faccio una ricerca per 'cane' vorrei che la ricerca mi restituisse solo i record che contengono in quel campo la parola intera.
    codice:
    Questi vanno bene:
     - Il mio cane è grande.
     - Il cane del vicino si chiama Fox.
    
    Questi non vanno bene:
     - Ieri ho giocato a pallacanestro.
     - Io abito in via Pisacane.
    Come potrei implementare una ricerca del genere?
    Come db utilizzo Sql Server.

    Grazie e ciao.
    <%= Jesus %>
    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna" - Albert Einstein.

  2. #2
    Utente di HTML.it L'avatar di Luis33
    Registrato dal
    May 2003
    Messaggi
    975
    dipende dalla query, possiamo vederla (la query)?
    ... Sono graditi codes, esempi pratici, suggerimenti, consigli e critiche...
    "Ai posteri l'ardua sentenza..."
    Tante grazie
    Saluti
    Luis 33

  3. #3
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    puoi provare con
    where campo LIKE "% cane %" ci sono gli spazi
    magari cosi salti eventuali ".Cane" o "(cane " che puoi includere con OR

  4. #4
    Utente di HTML.it L'avatar di jesus
    Registrato dal
    Jan 2002
    Messaggi
    717
    La query che attualmente utilizzo è una classica LIKE:
    codice:
    SELECT * FROM tabella WHERE campo LIKE '%cane%'
    citando l'esempio del primo post, ma questa query mi prende tutti campi che contengono cane come canestro, pisacane.

    Come potrei fare prendere solo le parole intere?

    Avevo pensato una cosa del genere:
    codice:
    SEELCT * 
      FROM tabella
     WHERE campo LIKE '% cane %'
        OR campo LIKE '%.cane %'
        OR campo LIKE '%,cane %'
    però come vedete ho dovuto mettere tre condizioni al posto di una. Non c'è un modo, magari migliorando la clausola like per far si che riunisca tutto in una clausola?
    <%= Jesus %>
    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna" - Albert Einstein.

  5. #5
    Utente di HTML.it L'avatar di Luis33
    Registrato dal
    May 2003
    Messaggi
    975
    naturalmente da personalizzare:
    codice:
    ' Configura SQL
    	sql = "SELECT * FROM [URLIndex] WHERE"
        
    
    
    	' Crca nel campo descrizione
    	sql = sql & " ( [Description] LIKE '%" & QueryWords( 0 ) & "%'"			' First
    	For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
    		If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
    			If uCase( QueryWords( i-1 ) ) = "OR" Then
    				sql = sql & " OR [Description] LIKE '%" & QueryWords( i ) & "%'"
    			Else
    				sql = sql & " AND [Description] LIKE '%" & QueryWords( i ) & "%'"
    			End If
    		End If
    	Next
    
    	' Cerca nel campo parole chiavi
    	sql = sql & " ) OR ( [Keywords] LIKE '%" & QueryWords( 0 ) & "%'"
    	For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
    		If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
    			If uCase( QueryWords( i-1 ) ) = "OR" Then
    				sql = sql & " OR [Keywords] LIKE '%" & QueryWords( i ) & "%'"
    			Else
    				sql = sql & " AND [Keywords] LIKE '%" & QueryWords( i ) & "%'"
    			End If
    		End If
    	Next
    
    
    	' Cerca tra i titoli
    	sql = sql & " ) OR ( [Title] LIKE '%" & QueryWords( 0 ) & "%'"
    	For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
    		If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
    			If uCase( QueryWords( i-1 ) ) = "OR" Then
    				sql = sql & " OR [Title] LIKE '%" & QueryWords( i ) & "%'"
    			Else
    				sql = sql & " AND [Title] LIKE '%" & QueryWords( i ) & "%'"
    			End If
    		End If
    	Next
    
    
    	' Cerca nel sommario
    	sql = sql & " ) OR ( [Summary] LIKE '%" & QueryWords( 0 ) & "%'"
    	For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
    		If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
    			If uCase( QueryWords( i-1 ) ) = "OR" Then
    				sql = sql & " OR [Summary] LIKE '%" & QueryWords( i ) & "%'"
    			Else
    				sql = sql & " AND [Summary] LIKE '%" & QueryWords( i ) & "%'"
    			End If
    		End If
    	Next
    
    	sql = sql & " )"
    ... Sono graditi codes, esempi pratici, suggerimenti, consigli e critiche...
    "Ai posteri l'ardua sentenza..."
    Tante grazie
    Saluti
    Luis 33

  6. #6
    Utente di HTML.it L'avatar di jesus
    Registrato dal
    Jan 2002
    Messaggi
    717
    Originariamente inviato da Luis33
    naturalmente da personalizzare:
    codice:
    ' Configura SQL
    	sql = "SELECT * FROM [URLIndex] WHERE"
        
    
    
    	' Crca nel campo descrizione
    	sql = sql & " ( [Description] LIKE '%" & QueryWords( 0 ) & "%'"			' First
    	For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
    		If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
    			If uCase( QueryWords( i-1 ) ) = "OR" Then
    				sql = sql & " OR [Description] LIKE '%" & QueryWords( i ) & "%'"
    			Else
    				sql = sql & " AND [Description] LIKE '%" & QueryWords( i ) & "%'"
    			End If
    		End If
    	Next
    
    	' Cerca nel campo parole chiavi
    	sql = sql & " ) OR ( [Keywords] LIKE '%" & QueryWords( 0 ) & "%'"
    	For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
    		If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
    			If uCase( QueryWords( i-1 ) ) = "OR" Then
    				sql = sql & " OR [Keywords] LIKE '%" & QueryWords( i ) & "%'"
    			Else
    				sql = sql & " AND [Keywords] LIKE '%" & QueryWords( i ) & "%'"
    			End If
    		End If
    	Next
    
    
    	' Cerca tra i titoli
    	sql = sql & " ) OR ( [Title] LIKE '%" & QueryWords( 0 ) & "%'"
    	For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
    		If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
    			If uCase( QueryWords( i-1 ) ) = "OR" Then
    				sql = sql & " OR [Title] LIKE '%" & QueryWords( i ) & "%'"
    			Else
    				sql = sql & " AND [Title] LIKE '%" & QueryWords( i ) & "%'"
    			End If
    		End If
    	Next
    
    
    	' Cerca nel sommario
    	sql = sql & " ) OR ( [Summary] LIKE '%" & QueryWords( 0 ) & "%'"
    	For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
    		If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
    			If uCase( QueryWords( i-1 ) ) = "OR" Then
    				sql = sql & " OR [Summary] LIKE '%" & QueryWords( i ) & "%'"
    			Else
    				sql = sql & " AND [Summary] LIKE '%" & QueryWords( i ) & "%'"
    			End If
    		End If
    	Next
    
    	sql = sql & " )"
    Questo è un ottimo pezzo di codice... ma non sono sicuro che ricerchi le parole intere.

    Ho scritto questa query e sembra funzionare:
    codice:
    SELECT * FROM tabella WHERE campo LIKE '%[.,(/ ]cane[ .,)/]%'
    Con una botta sola riesco a distinguere l'esatta parola all'interno di una stringa come ad esempio:
    ' cane '
    ' cane.'
    '.Cane '
    ',cane '
    ' cane,'
    '(cane)'

    eccetera eccetera...

    grazie comunque a tutti per l'interessamento. Ciao
    <%= Jesus %>
    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna" - Albert Einstein.

  7. #7
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    il like supporta espressioni regolari? questa non la sapevo

  8. #8
    Utente di HTML.it L'avatar di jesus
    Registrato dal
    Jan 2002
    Messaggi
    717
    Originariamente inviato da kluster
    il like supporta espressioni regolari? questa non la sapevo
    In Sql Server si... prova a guardare sulla guida in linea del Transact SQL all'operatore LIKE.

    Ciao.
    <%= Jesus %>
    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna" - Albert Einstein.

  9. #9
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    ah ok ho trovato
    nel sql standard non sono espressioni regolari
    supportano un elenco di caratteri singoli all'interno delle quadre
    [ LISTA_DI_SINGOLI_CARATTERI_CONCATENATI]
    [! LISTA_DI_SINGOLI_CARATTERI_CONCATENATI] esclude i singoli caratteri

  10. #10
    Utente di HTML.it L'avatar di jesus
    Registrato dal
    Jan 2002
    Messaggi
    717
    Originariamente inviato da kluster
    ah ok ho trovato
    nel sql standard non sono espressioni regolari
    supportano un elenco di caratteri singoli all'interno delle quadre
    [ LISTA_DI_SINGOLI_CARATTERI_CONCATENATI]
    [! LISTA_DI_SINGOLI_CARATTERI_CONCATENATI] esclude i singoli caratteri
    Si non sono proprio espressioni regolari però mi sono state molto utili. Si snellisce di molto il codice.
    <%= Jesus %>
    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna" - Albert Einstein.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.