Visualizzazione risultati 1 fino 9 di 9

Discussione: [SQL]ricerca parti di strighe

  1. #1
    Guest

    Predefinito [SQL]ricerca parti di strighe

    Avrei l'esigenza di fare una query in cui ricerco all'interno di un campo una o più stringhe.
    Per una sola uso
    Codice:
    ...where CAMPO like 'stringa,%'...
    Quello che a me serve pero' è la stessa cosa che fa google, cioè se voglio ricercare
    Codice:
    casa + cane
    dovrei ricevere in output solo i campi in cui sono presenti entrambe. Questo non saprei come affrontarlo

    Nel campo CAMPO io memorizzo le chiavi di ricerca separate l'una dall'altra da una virgola.
    Avete qualche idea

  2. #2
    Guest

    Predefinito

    ma perchè stringa1%stringa2 non si puo' fare?

  3. #3
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    devi splittare ciò che ti arriva via post o get con explode, poi fai un bel foreach e ci aggiungi AND verificando che il contenuto non sia vuoto, altrimenti aggiungi 0 dopo AND, salvi il tutto in una variabile che inserisci nella query... spero di essermi ben spiegato. Ora sono di fretta, dopo in caso tu non abbia capito interverrò anche con esempi

  4. #4
    Guest

    Predefinito

    @demenziale: non posso fare come dici perchè il numero delle stringhe puo' essere variabile.

    @mythologia: adesso provo, avevo avuto un barlume ieri sera, ma non avevo tempo per provare


    -----------
    Ho fatto cosi'

    Codice PHP:
    $conta = substr_count($d, "+");
    $d = str_replace(" + ", "+", $d);
    $d = str_replace("+ ", "+", $d);
    $d = str_replace(" +", "+", $d);
    $ex = explode("+", $d);

    for (
    $i=0; $i<$conta+1; $i++)
    {
    if (
    $ex[$i] != ""){
    $and = $and." AND (chiavi LIKE '".$ex[$i].",%' OR chiavi = '".$ex[$i]."' OR chiavi LIKE '%, ".$ex[$i].",%' OR chiavi LIKE '%, ".$ex[$i]."')";
    }

    }
    dove $d è la stringa di ricerca (quella con i più).
    Sembrerebbe funzionare
    Ultima modifica di sql : 26-07-2006 alle ore 10.01.10

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Posso aggiungerti qualcosa? Come clausola LIKE credo che ti basti solo:
    Codice:
       if ($ex[$i] != ""){ 
            $and = $and." AND chiavi LIKE '%$ex[$i]%'"; 
        }
    In questo modo vengono trovate automaticamente tutte le voci che contengono la stringa cercata in una qualsiasi posizione, anche all'inizio o alla fine.

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  6. #6
    Guest

    Predefinito

    non ho usato questo modo perchè come dici tu prende anche parti di una parola. Esempio se cerco la parola "casa" mi ritorna anche i risultati come "casalinga", "casale",...
    e volevo proprio evitare questo

  7. #7
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da sql
    non ho usato questo modo perchè come dici tu prende anche parti di una parola. Esempio se cerco la parola "casa" mi ritorna anche i risultati come "casalinga", "casale",...
    e volevo proprio evitare questo
    Aggiungigli uno spazio alla fine.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  8. #8
    Guest

    Predefinito

    non posso, perchè se la parola chiave è una parola composta tipo "bar sport" e io ricerco "bar" la query mi ritorna anche "bar sport" e io non vorrei che accadesse. Per questo ho suddiviso le chiavi di ricerca con una virgola.

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da sql
    non posso, perchè se la parola chiave è una parola composta tipo "bar sport" e io ricerco "bar" la query mi ritorna anche "bar sport" e io non vorrei che accadesse. Per questo ho suddiviso le chiavi di ricerca con una virgola.
    Scusa forse è ot ma se io inserisco "bar" come chiave di ricerca deve tornarmi anche "bar sport" ...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •