Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Taurus dei miracoli - 07 Gennaio 2011, 21:48:52

Titolo: [RISOLTO] Ricerca di una parola in una stringa
Inserito da: Taurus dei miracoli - 07 Gennaio 2011, 21:48:52
Ho la necessita con mysql di cercare una parola in una stringa.

Con l'istruzione :

sql = "select * from libro where testo like '%" & TextBox1.Text & "%';"

pensavo di avere risolto.
Ma la cosa non è proprio cosi:
se infatti ricerco la parola "tenda" mi risponde anche con il testo che contiente "stenda"
o se cerco "casa" mi risponde con il testo che contiene "casaccio".

Si può limitare la ricerca alla parola singola?
Titolo: Re: Ricerca di una parola in una stringa
Inserito da: dex - 07 Gennaio 2011, 23:31:11
ciao

non so se mysql riesce a fare una cosa simile.

avevo un problema simile e ho risolto aggiungendo spazi

prova ad inserire uno spazio prima e uno dopo la parola
Titolo: Re: Ricerca di una parola in una stringa
Inserito da: Ceskho - 07 Gennaio 2011, 23:39:43
Ho la necessita con mysql di cercare una parola in una stringa.

Con l'istruzione :

sql = "select * from libro where testo like '%" & TextBox1.Text & "%';"

pensavo di avere risolto.
Ma la cosa non è proprio cosi:
se infatti ricerco la parola "tenda" mi risponde anche con il testo che contiente "stenda"
o se cerco "casa" mi risponde con il testo che contiene "casaccio".

Si può limitare la ricerca alla parola singola?

Dalla tua domanda deduco che l'istruzione sql che hai postato l'hai prelevata da qualche parte senza comprenderne realmente il significato....

Se guardi bene, l'istruzione ha due caratteri particolari: %
Se cerchi in un manuale sql vedrai che quel carattere è iul carattere jolly che indica ogni carattere alfanumerico.

La tua istruzione deve essere perciò:

Codice: sql [Seleziona]
sql = "select * from libro where testo like " & TextBox1.Text & ";"
Titolo: Re: Ricerca di una parola in una stringa
Inserito da: Taurus dei miracoli - 08 Gennaio 2011, 18:43:24
Ho la necessita con mysql di cercare una parola in una stringa.

Con l'istruzione :

sql = "select * from libro where testo like '%" & TextBox1.Text & "%';"

pensavo di avere risolto.
Ma la cosa non è proprio cosi:
se infatti ricerco la parola "tenda" mi risponde anche con il testo che contiente "stenda"
o se cerco "casa" mi risponde con il testo che contiene "casaccio".

Si può limitare la ricerca alla parola singola?

Dalla tua domanda deduco che l'istruzione sql che hai postato l'hai prelevata da qualche parte senza comprenderne realmente il significato....

Se guardi bene, l'istruzione ha due caratteri particolari: %
Se cerchi in un manuale sql vedrai che quel carattere è iul carattere jolly che indica ogni carattere alfanumerico.

La tua istruzione deve essere perciò:

Codice: sql [Seleziona]
sql = "select * from libro where testo like " & TextBox1.Text & ";"


L'istruzione che tu mi hai messo non funziona :'(
In TextBox1.Text metto una parola che è contenuta in testo ma non corrisponde alla totalità del campo.
Mi spiego meglio:
campo: Nel mezzo del cammin di nostra vita
TextBox1: di

Ho provato con la tua istruzione ma non da' nessun risultato, mentre con i caratteri jolly mi mette tutti i records dove è presente la sillaba "di"
 :hatecomputer:

ciao

non so se mysql riesce a fare una cosa simile.

avevo un problema simile e ho risolto aggiungendo spazi

prova ad inserire uno spazio prima e uno dopo la parola

Ho provato anch'io ad inserire spazi, ma ho un problema quando la parola è preceduta da un'apostrofo o seguita da un segno di punteggiatura.
 :rolleyes:

Avete altre idee?
Titolo: Re: Ricerca di una parola in una stringa
Inserito da: fsurfing - 08 Gennaio 2011, 19:12:18
la  query indicata da cesko dovrebbe funzionare, al limite modificala così:

Codice: gambas [Seleziona]
   1. sql = "select * from libro where testo like '" & TextBox1.Text & "';"  
Titolo: Re: Ricerca di una parola in una stringa
Inserito da: Taurus dei miracoli - 08 Gennaio 2011, 20:40:28
Ne una ne l'altra istruzione restituisce un valore.
Mi rendo conto che è un paradosso perchè SQL non è un'ipotesi...
...ma deve esserci qualcosa di strano.
Per il momento lascio i caratteri jolly che mi permettono di avere un valore positivo per la query.
Se avete idee fatemi sapere.
Grazie
 ??? :rolleyes: :o
Titolo: Re: Ricerca di una parola in una stringa
Inserito da: fsurfing - 08 Gennaio 2011, 20:45:18
direi che puoi migliorare ponendo il carattere giolli solo alla fine
Codice: [Seleziona]
 sql = "select * from libro where testo like '" & TextBox1.Text & "%';"    
o solo all' inizio
Titolo: Re: Ricerca di una parola in una stringa
Inserito da: Taurus dei miracoli - 09 Gennaio 2011, 10:25:23
Niente da fare:
sia con il carattere jolly solo davanti che col carattere jolly solo dietro non da' nessun risultato.
 :hatecomputer:
Titolo: Re: Ricerca di una parola in una stringa
Inserito da: milio - 09 Gennaio 2011, 10:44:39
prova anche cosi':

Codice: sql [Seleziona]
sql = "select * from libro where testo like '%_" & TextBox1.Text & "_%';"   
Titolo: Re: Ricerca di una parola in una stringa
Inserito da: tornu - 09 Gennaio 2011, 22:37:14
Si può limitare la ricerca alla parola singola?

Certo che si, ma non devi usare l' operatore LIKE, quindi la SELECT sara:
sql = "select * from libro where testo = '" & TextBox1.Text & "'
E' ovvio che se i record del campo testo contengono dati del tipo "datoA, datoAA" e la TextBox contiene la stringa "dato" non otterrai nessun risultato.

L'operatore LIKE con il carattere % ad esempio:
'a%' indica qualunque stringa abbia come primo carattere 'a'
'%b' indica qualunque stringa abbia come ultimo carattere 'b'
'%c% indica qualunque stringa abbia in qualsiasi posizione un carattere 'c'

Ci sono anche altre opzioni utilizzabili con LIKE, per il momento spero con gli esempi che ti ho fatto di averti dato una mano
Titolo: Re: Ricerca di una parola in una stringa
Inserito da: Taurus dei miracoli - 10 Gennaio 2011, 18:05:17
Tutto sommato credo che...
...anche grazie ai vostri consigli ho risolto come volevo.
Grazie a tutti
 :2birre: