Visualizzazione dei risultati da 1 a 10 su 10

Discussione: problema ricerca

  1. #1
    Utente di HTML.it L'avatar di satoshi
    Registrato dal
    May 2002
    Messaggi
    217

    problema ricerca

    ho un problema su una ricerca dove non riesco a trovare una soluzione

    devo trovare un numero all'interno di una serie di numeri salvati in un campo del database che sono divisi da una virgola

    esempio su 3 record inseriti nel database

    record 1 359,435
    record 2 18,73,352,98
    record 3 67,35,482

    il numero che devo cercare è 35

    search = 35

    LIKE '%"& search &"%'

    usando LIKE in questo modo mi trova tutti i numeri dove contengono il 35
    in questo caso me li visualizza tutti e 3 i record

    se voglio trovare solamente il numero esatto come posso fare? ovvero mostrare solo il record numero 3

  2. #2
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592

    ipotesi di ricerca

    Quote Originariamente inviata da satoshi Visualizza il messaggio
    ho un problema su una ricerca dove non riesco a trovare una soluzione

    devo trovare un numero all'interno di una serie di numeri salvati in un campo del database che sono divisi da una virgola

    esempio su 3 record inseriti nel database

    record 1 359,435
    record 2 18,73,352,98
    record 3 67,35,482

    il numero che devo cercare è 35

    search = 35

    LIKE '%"& search &"%'

    usando LIKE in questo modo mi trova tutti i numeri dove contengono il 35
    in questo caso me li visualizza tutti e 3 i record

    se voglio trovare solamente il numero esatto come posso fare? ovvero mostrare solo il record numero 3
    Ciao
    se la ricerca la fai in un database puoi cercare la stringa numerica con la virgola a destra e la stringa numerica con la virgola a sinistra tramite instr(...
    sempre che la serie di numeri sia in un campo e non in piu campi
    esempio cerchi 35 devi usare ",35" e "35," contemporaneamente
    per esempio...componi i due campi ric1 e ric2 ponend che il campo db sia "campo"
    codice:
    ric1=","& search
    ric2=search&","
    where ((instr(1,campo,ric1)>0) or (instr(1,campo,ric2)>0)
    Beh in Access l'ho usata e funziona all'incirca allo stesso modo che ho usato in passato...
    Bye
    Vic53

  3. #3
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    Quote Originariamente inviata da vic53 Visualizza il messaggio
    Ciao
    se la ricerca la fai in un database puoi cercare la stringa numerica con la virgola a destra e la stringa numerica con la virgola a sinistra tramite instr(...
    sempre che la serie di numeri sia in un campo e non in piu campi
    esempio cerchi 35 devi usare ",35" e "35," contemporaneamente
    per esempio...componi i due campi ric1 e ric2 ponend che il campo db sia "campo"
    codice:
    ric1=","& search
    ric2=search&","
    where ((instr(1,campo,ric1)>0) or (instr(1,campo,ric2)>0)
    Beh in Access l'ho usata e funziona all'incirca allo stesso modo che ho usato in passato...
    Bye
    pardon
    *** scusa nella risposta ho scritto codice senza gli apici nella stringa SQL...
    i campi ric1 e ric2 devono avere gli apici
    al posto di
    ...where ((instr(1,campo,ric1)>0) or (instr(1,campo,ric2)>0)
    devi mettere
    where ((instr(1,campo, '"&ric1&"')>0... e vale anche per il campo ric2

    gli apici servono a delimitare la stringa nella ricerca
    scusa la svista

    ciao
    Vic53

  4. #4
    Utente di HTML.it L'avatar di satoshi
    Registrato dal
    May 2002
    Messaggi
    217
    salve a distanza di tempo torno su questo post per risolvere definitivamente il mio problema


    avevo momentaneamente risolto il mio problema con un metodo poco efficace (facendo la ricerca dopo aver eseguito la query)




    dovendo usare per forza la ricerca direttamente nella query ho ripreso il codice proposto da Vin53




    premetto che uso un database mysql


    ma ho questo errore


    search = 8


    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
    [MySQL][ODBC 3.51 Driver][mysqld-4.1.25-standard-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' ric1) > 0) or (instr(1, biografie, '8,') >0 )


    ho scritto in questo modo il codice


    search = request.querystring("id")


    ric1 = ","& search &""
    ric2 = ""& search &","


    WHERE evento_attivo = 1 and mese= '" & strmese & "' and anno = '" & stranno & "' and (instr(1, biografie, '"& ric1 &"') > 0) or (instr(1, biografie, '"& ric2 &"') >0 ) ORDER BY datainizio asc"






    spero in un vostro aiuto

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    "AND CONCAT(',', biografie, ',') LIKE '%," & search & ",%' "
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it L'avatar di satoshi
    Registrato dal
    May 2002
    Messaggi
    217
    grazie per la risposta

    allora ho provato il codice

    ho scritto in questo modo



    Set Rs_aaa = Server.CreateObject("ADODB.Recordset")
    comm.CommandText = "SELECT * FROM eventi WHERE evento_attivo = 1 and mese = '" & strmese & "' and anno = '" & stranno & "' and CONCAT (',', biografie ,',') LIKE '%," & search & ",%' ORDER BY datainizio asc"

    ma ho questo errore

    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
    [MySQL][ODBC 3.51 Driver][mysqld-4.1.25-standard-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(',', biografie ,',') LIKE '%,238,%' ORDER BY datainizio asc' at line 1

  7. #7
    fatti stampare comm.CommandText dopo averlo composto, copialo e postalo (se non vedi già da te l'errore...)


  8. #8
    Utente di HTML.it L'avatar di satoshi
    Registrato dal
    May 2002
    Messaggi
    217
    ecco

    SELECT * FROM eventi WHERE evento_attivo = 1 and mese= '01' and anno = '2016' and CONCAT (',', biografie ,',') LIKE '%,238,%' ORDER BY datainizio asc

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Mi sbaglio o c'e' uno spazio dopo CONCAT e prima della parentesi ?
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    Utente di HTML.it L'avatar di satoshi
    Registrato dal
    May 2002
    Messaggi
    217
    perfetto funziona alla grande

    non so come ringraziarti

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.