Autore Topic: [RISOLTO] Ricerca di una parola in una stringa  (Letto 13677 volte)

Offline Taurus dei miracoli

  • Maestro Gambero
  • ****
  • Post: 334
  • In omnia pericula tasta testicula
    • Mostra profilo
[RISOLTO] Ricerca di una parola in una stringa
« il: 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?
« Ultima modifica: 10 Gennaio 2011, 18:05:35 da Taurus dei miracoli »
"penso spesso ad acquiloni,
a grandi imprese,
ad una thailandese...
...ma l'impresa eccezionale,
dammi retta,
è essere normale"
(L. Dalla)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Ricerca di una parola in una stringa
« Risposta #1 il: 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

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Ricerca di una parola in una stringa
« Risposta #2 il: 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 & ";"
« Ultima modifica: 07 Gennaio 2011, 23:41:43 da Ceskho »

Offline Taurus dei miracoli

  • Maestro Gambero
  • ****
  • Post: 334
  • In omnia pericula tasta testicula
    • Mostra profilo
Re: Ricerca di una parola in una stringa
« Risposta #3 il: 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?
"penso spesso ad acquiloni,
a grandi imprese,
ad una thailandese...
...ma l'impresa eccezionale,
dammi retta,
è essere normale"
(L. Dalla)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Ricerca di una parola in una stringa
« Risposta #4 il: 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 & "';"  

Offline Taurus dei miracoli

  • Maestro Gambero
  • ****
  • Post: 334
  • In omnia pericula tasta testicula
    • Mostra profilo
Re: Ricerca di una parola in una stringa
« Risposta #5 il: 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
"penso spesso ad acquiloni,
a grandi imprese,
ad una thailandese...
...ma l'impresa eccezionale,
dammi retta,
è essere normale"
(L. Dalla)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Ricerca di una parola in una stringa
« Risposta #6 il: 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

Offline Taurus dei miracoli

  • Maestro Gambero
  • ****
  • Post: 334
  • In omnia pericula tasta testicula
    • Mostra profilo
Re: Ricerca di una parola in una stringa
« Risposta #7 il: 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:
"penso spesso ad acquiloni,
a grandi imprese,
ad una thailandese...
...ma l'impresa eccezionale,
dammi retta,
è essere normale"
(L. Dalla)

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Ricerca di una parola in una stringa
« Risposta #8 il: 09 Gennaio 2011, 10:44:39 »
prova anche cosi':

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

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Ricerca di una parola in una stringa
« Risposta #9 il: 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
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Taurus dei miracoli

  • Maestro Gambero
  • ****
  • Post: 334
  • In omnia pericula tasta testicula
    • Mostra profilo
Re: Ricerca di una parola in una stringa
« Risposta #10 il: 10 Gennaio 2011, 18:05:17 »
Tutto sommato credo che...
...anche grazie ai vostri consigli ho risolto come volevo.
Grazie a tutti
 :2birre:
"penso spesso ad acquiloni,
a grandi imprese,
ad una thailandese...
...ma l'impresa eccezionale,
dammi retta,
è essere normale"
(L. Dalla)