Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Chiarimenti su LIKE

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199

    Chiarimenti su LIKE

    CIao (ancora) a tutti!

    Domanda molto più semplice della precedente:

    premetto che:
    1) linguaggi e database in SQL e PHP
    2) uso tabelle INNODB con FK e non ho una versione sufficientemente aggiornata di mysql (strano visto che è l'ultimo easyPHP) che mi permette di utilizzare gli indici FULL TEXT su tabelle del genere (e non ho voglia di aggiornare MYSQL perchè, se poi carico il sito su un server non aggiornato, sto incasinato (se avete suggerimenti in merito sarò lietissimo di ascoltarli))

    mettiamo che io abbia un indice con "Pollo alle mandorle".
    Ho fatto un form di ricerca nel quale estraggo la variabile $pincopallo.
    Nella query che utilizza LIKE scrivo $pincopallo %.
    Durante la ricerca mi viene restituito "Pollo alle mandorle" solo se scrivo nel form una qualsiasi parte di "Pollo". Ma scrivendo per es. "alle" lui non me lo trova.
    Quindi: cosa devo mettere nella query affinchè mi trovi l'indice anche se metto parte delle altre parole che lo compongono???

    CIao e grazie


  2. #2
    ... LIKE 'parola%' -- inizia con parola
    ... LIKE '%parola%' -- contiene parola
    ... LIKE '%parola' -- finisce con parola


  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199
    Grazie Optime, ma avevo provato già così senza ricavare quello che volevo perchè, anche facendo così, lui considera sempre e solo la prima parola, tutto ciò che c'è dietro lo spazio non lo considera.
    Ho risolto solo grazie al fatto che, quando inserivo il nome del prodotto nel database, inserivo anche il nome dell'immagine che rinominavo contestualmente con il nome del prodotto stesso intervallato però dall'underscore invece che dagli spazi. Ergo, facendo la ricerca sul nome del file invece che sul nome del prodotto, funziona, anche mettendo solo %$pincopallo% (vede qualsiasi parte della stringa), però è un "PORCELLUM", in futuro non potrò usarlo in altri ambiti.
    Per cui, solo a scopo didattico, ci sono altri metodi?

    Grazie.

  4. #4
    Originariamente inviato da termopili
    Grazie Optime, ma avevo provato già così senza ricavare quello che volevo perchè, anche facendo così, lui considera sempre e solo la prima parola, tutto ciò che c'è dietro lo spazio non lo considera.
    Ho risolto solo grazie al fatto che, quando inserivo il nome del prodotto nel database, inserivo anche il nome dell'immagine che rinominavo contestualmente con il nome del prodotto stesso intervallato però dall'underscore invece che dagli spazi. Ergo, facendo la ricerca sul nome del file invece che sul nome del prodotto, funziona, anche mettendo solo %$pincopallo% (vede qualsiasi parte della stringa), però è un "PORCELLUM", in futuro non potrò usarlo in altri ambiti.
    Per cui, solo a scopo didattico, ci sono altri metodi?

    Grazie.
    non ho capito niente. funziona o non funziona? e quali altri metodi vorresti per fare cosa?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199
    Ciao Optime.

    Allora faccio degli esempi pratici:

    record nome: Pollo alle mandorle
    record file_nome: Pollo_alle_mandorle.jpg

    Facendo un SELECT con %alle% sul record nome non ho ottenuto nessun risultato. Mi veniva restituito qualcosa solo se cercavo dei caratteri che stavano anche nella prima parola "Pollo" (es. %oll% o %llo% ecc. ecc.)
    Nel mio caso ho risolto solo grazie al fatto che ho inserito nel database anche il nome del file. Infatti, facendo la ricerca con la stessa query (cambiando appunto solo "nome" con "nome_file") e richiedendo la pattern %alle% mi restituisce finalmente "Pollo alle mandorle".
    Quindi risulta evidente (almeno da questa esperienza) che il LIKE in una query cerca solo i termini della prima parola e non in tutto il record.

    Detto questo, la mia domanda finale era: nell'eventualità che non si abbia nel database un record con tutte le parole unite (come nel mio coso "file_nome") come si sarebbe potuto risolvere il problema della ricerca su tutte le parole del record e non solo sulla prima? (senza ricorrere agli indici FULL TEXT intendo)

    Grazie cmq dell'interessamento.

    CIao


  6. #6
    Originariamente inviato da termopili
    Quindi risulta evidente (almeno da questa esperienza) che il LIKE in una query cerca solo i termini della prima parola e non in tutto il record.
    assolutamente falso. deve esserci qualcos'altro

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.