Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Aiuto con Like

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    80

    Aiuto con Like

    Buongiorno a tutti,
    sono qui a chiedervi un aiuto, e cerco di farlo con un esempio:

    Supponiamo che io abbia una un campo di una tabella chiamato descrizione.
    In questo campo c'è una stringa di massimo tot caratteri.
    Supponiamo ora che tra queste descrizioni ce ne siano due di questo tipo:

    Giuseppe gioca a Palla
    Giuseppe gioca a Pallavolo

    Ora se io faccio una query del tipo SELECT descizione FROM tabella WHERE descrizione LIKE '%palla%' lui mi seleziona entrambe le descrizioni

    Se invece faccio SELECT descizione FROM tabella WHERE descrizione LIKE 'palla' non mi viene visualizzato nessun risultato.

    Cioè c'è modo per fare un confronto tra il campo descrizione e una stringa data in modo da ottenere solo quelle descrizioni che hanno esattamente la parola PALLA contenuta in essa?
    (cioè Giuseppe gioca a Palla)

    Grazie

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    like '%palla' qualsiasi parola che finisce con palla

    like 'palla%' qualsiasi parola che inizia con palla

    like '%palla%' qualsiasi parola che contiene palla

  3. #3
    Originariamente inviato da marco80
    like '%palla' qualsiasi parola che finisce con palla

    like 'palla%' qualsiasi parola che inizia con palla

    like '%palla%' qualsiasi parola che contiene palla
    like '% palla %'

    metti lo spazio e isoli palla come parola.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    80
    Cavolo, la situazione è un pò più difficile del previsto.
    Cioè mettendo come spazi il tutto viene isolato come parola e va benissimo,
    però c'è un problema

    se ho una descrizione di questo tipo

    Giuseppe giocava con la palla, bla bla bla

    giustamente isolando la parola palla questa descrizione non mi viene contata poichè c'è una virgola, secondo voi come potrei fare?

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    prova così
    select * from tabella where nome_campo REGEXP '[[:<:]]palla[[:>:]]'

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    80
    WOW Funziona.

    Ti chiedo troppo se mi spieghi brevemente l'espressione regolare che hai usato? (è un espressione regolare vero?)

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Sì esatto, qui le trovi spiegate.

    http://dev.mysql.com/doc/refman/4.1/en/regexp.html

    si limita a cercare la parola esatta all'interno della stringa a prescindere dalla punteggiatura.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    80
    Allora ho letto la documentazione per cercare di capire di più il tutto,
    ora però mi sono trovata d'avanti ad un problema e vorrei sapere se la soluzione che ho trovato è buona oppure no.

    Quando voglio fare fare la query ad uno script PHP con tanto di variabile scrivendo una cosa di questo genere nella variabile query

    SELECT descrizione
    FROM `tabella`
    WHERE `descrizione` REGEXP '[[:<:]]$testoricerca[[:>:]]'

    lo script mi da il seguente errore
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in...

    e un problema relativo all'espressione con la variabile, io ho ovviato in questo modo secondo voi è corretto?
    SELECT descrizione
    FROM `tabella`
    WHERE `descrizione` REGEXP '[[:<:]]+$testoricerca+[[:>:]]'
    (cioè inserendo semplicemente i segni di somma)

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    $query mysql_query("SELECT descrizione
    FROM tabella
    WHERE descrizione REGEXP '[[:<:]]"
    .$testoricerca."[[:>:]]' ") or die(mysql_error()); 

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    80
    Grazie, alcune volte le soluzioni giuste solo le più banali, ma non ci avevo pensato,
    ora volevo chiedere solo un ultima cosa riguardo alle espressioni regolari e alla funzion ereg del php.

    Se volessi fare un controllo su una stringa passata per $_POST, che questa stringa sia un susseguirsi di qualsiasi carattere o spazio ma iniziato e terminato da " va bene una funzione di questo tipo? o dovrei scriverla in un altro modo?

    $flag =ereg("&quot+[]+&quot",$testo);

    Esempio
    "ciccio" TRUE
    "cane FALSE
    pane" FALSE
    "cane da caccia" TRUE

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.