Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    ricerca in un campo text in mysql

    Ciao a tutti,

    ho da effettuare una ricerca in più campi ma se non uso il LIKE % all'interno del campo formato TEXT non mi trova niete.

    questo è un esempio del codice che funziona troppo, mi da risultati innutili, ad esempio se cerco fico, mi trova anche specifico.

    codice:
    	strSQL = "SELECT * FROM tabella WHERE titolo LIKE '"  &request.form("query") & "%' OR nomecomune LIKE '"  &request.form("query") & "%' OR nomelatino LIKE '"  &request.form("query") & "%' OR Testo LIKE '%"  &request.form("query") & "%' order by  nomecomune and nomelatino and titolo and Testo "
    Allora ho pensato di togliere i % dalla ricerca in modo da far trovare parole isolate, cosi :
    codice:
    	strSQL = "SELECT * FROM tabella WHERE titolo LIKE '"  &request.form("query") & "%' OR nomecomune LIKE '"  &request.form("query") & "%' OR nomelatino LIKE '"  &request.form("query") & "%' OR Testo LIKE '"  &request.form("query") & "' order by  nomecomune and nomelatino and titolo and Testo "
    ma in questo caso non mi da risultati, all'interno del data base ci sono 20 record con scritto "fico" ma non me li trova.

    dovrei usare equals?

    Come posso fare per risolvere questo inghippo?

    GRazie Mauro

  2. #2
    codice:
    paroladacercare = "fico"
    SQL = "SELECT * FROM tuatabella WHERE tuocampo REGEXP '\b" & paroladacercare & "\b';"
    ovviamente devi conoscere le regular expression
    ma se mi spieghi che tipo di ricerche ti servono te li scrivo io
    san imente saluta

    * http://simonecingano.it *

  3. #3
    Grazie mille,
    allora, devo fare un motore di ricerca abbastanza semplice, ho un db con 20 campi e in 4 di questi devo cercare la parola che cerca l'utente, mentre i primi 3 campi sono corti all'interno del testo ci sono 300 righe di testo, ecco io devo trovare all'interno di questo la parola cercata, solamente quanto è da sola non quando è accompagnata .

    Esempio :
    parola cercata = Fico


    Frase 1 = Il Fico è un frutto

    Frace 2 = Un concime speciFICO per la camelia

    Ecco io devo trovare solo la Frase 1 non entrambi.

    Grazie ancora per l'aiuto Mauro

  4. #4
    perfetto allora al posto dei 3 LIKE che usavi prima ci metti

    REGEXP '(\b|^)" & paroladacercare & "(\b|$)'

    -----

    che significa

    cerca se esiste almeno una corrispondenza di: parola delimitata a destra e sinistra

    \b = delimitazione

    per es: SPECIFICO = FICO\b
    per es: IO SONO FICO = \bFICO\b

    ok?

    ignora gli altri caratteri...
    non è questo il luogo e il momento per spiegare le regexp che sono un mondo infinito

    prova a riscrivere la query così e poi postala qui che vediamo se è corretta
    san imente saluta

    * http://simonecingano.it *

  5. #5
    GRazie ancora per l'aiuto


    questa è la query :

    codice:
    strSQL = "SELECT * FROM tabella WHERE titolo REGEXP '(\b|^)" & query & "(\b|$)' OR nomecomune REGEXP '(\b|^)" & query & "(\b|$)' OR nomelatino REGEXP '(\b|^)" & query & "(\b|$)' OR Testo REGEXP '(\b|^)" & query & "(\b|$)' order by  nomecomune and nomelatino and titolo "
    l'ho fatta cosi, ma non mi trova niente.

    mi spieghi dove sbaglio?

    non so se l'ho detto che uso mysql come db.

    GRazie Mauro

  6. #6
    se non avessi dichiarato l'uso di MYSQL di certo non potevamo usare le regexp

    comunque

    quell'order by mi spaventa... noti nulla di strano?

    codice:
    ORDER BY nomecomune AND nomelatino AND titolo
    san imente saluta

    * http://simonecingano.it *

  7. #7
    Io ho scritto minuscolo mentr tu Maiuscolo?
    ho provato a toglierlo ma non mi da risultati ugualmente

  8. #8
    Originariamente inviato da Mauro74
    Io ho scritto minuscolo mentr tu Maiuscolo?
    ho provato a toglierlo ma non mi da risultati ugualmente


    qual'è la SINTASSI dell'orderby???

    LA VIRGOLA

    ok ok... a volte cerco di portare con la mano, ma forse voi volete solo la soluzione
    scusami
    san imente saluta

    * http://simonecingano.it *

  9. #9
    no no,
    non voglio la soluzione, ma avevo preso il discorso ORDER BY 1 AND 2 da questo post :
    http://forum.html.it/forum/showthrea...readid=1017090

    codice:
    strSQL = "SELECT * FROM tabella WHERE titolo REGEXP '(\b|^)" & query & "(\b|$)' OR nomecomune REGEXP '(\b|^)" & query & "(\b|$)' OR nomelatino REGEXP '(\b|^)" & query & "(\b|$)' OR Testo REGEXP '(\b|^)" & query & "(\b|$)' ORDER BY nomecomune ,nomelatino,titolo LIMIT "&inizio&","&numeroperpagina&" "
    questa e la sintassi penso

    SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;



    cosi può andare per l'order?

    in ogni caso non restituisce dati , dove sbaglio?


    Grazie ancora Mauro

  10. #10
    la chiamerei PROPAGAZIONE DELL'ERRORE :P

    allora, siccome ancora non funziona facciamo le cose una per una

    fai una sola ricerca

    codice:
    strSQL = "SELECT * FROM tabella WHERE titolo REGEXP '(?:\b|^)" & query & "(?:\b|$)'"
    senza limiti o ordinamenti

    vedi se funziona e poi continuiamo
    san imente saluta

    * http://simonecingano.it *

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.