Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783

    includere lettere accentate nelle query di ricerca

    se nei nominativi del db degli utenti ci sono anche lettere accentate...
    come possiamo fare ad includerli nelle ricerca se nel campo di ricerca scriviamo solo testo semplice?
    tocca fare la lunga lista di variabili accentate? o abbiamo una soluzione migliore?

    cercare "OR nome like '%a%' OR nome like '%à%' (e via di seguito)" è roba da forte mal di testa...

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Giusto un'idea: puoi fare una ricerca per "somiglianza"?
    In tal caso potresti usare la funzione DIFFERENCE()

    codice:
    SELECT Nome FROM Utenti
    WHERE DIFFERENCE(Nome, 'Giosue') = 4;
    potrebbe trovare "Giosuè"

    La funzione restituisce un valore da 0 a 4 dove 4 indica una somiglianza forte o una corrispondenza identica.

    Considera comunque che il confronto viene eseguito secondo un criterio di assonanza, per cui sono comprese tutte le lettere, non solo quelle accentate. Potrebbe quindi trovare "Giosuè" ma anche "Giosse".
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    dopo aver scritto il post ho pensato che mi serve un'espressione regolare,
    cercando un po' in rete ho visto che altri hanno esposto la questione.
    ma non ho mai imparato a scriverne una... se un'anima pia me ne passa una adatta allo scopo la ringrazierò sentitamente

    anche la soluzione da te proposta non è male per il contesto. anzi, forse meglio.
    ora la provo, sempre che access (il db utilizzato) sia daccordo...

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    no: access (.mdb) non sa cosa sia DIFFERENCE

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    no: access (.mdb) non sa cosa sia DIFFERENCE
    brutta storia

    ho pensato che mi serve un'espressione regolare
    si può fare. Bisogna però capire quali sono i criteri specifici che intendi applicare nella ricerca.

    Partiamo dall'input di esempio: "Giosue"
    Per ipotesi, sul db tu potresti avere "Giosuè" o anche "Gìosue" o "Giòsùé" e tutte le possibili varianti con e senza vocali accentate.

    Il sistema dovrebbe quindi poter trovare qualsiasi variante?

    In tal caso, bisogna creare una funzione che "trasformi" la stringa di input in un pattern (secondo i criteri prestabiliti).

    La funzione potrebbe quindi restituire un pattern del genere:

    codice:
    ^G(i|ì)(o|ò)s(u|ù)(e|è|é)$
    .
    Chiaramente non si tratta di elaborare uno specifico pattern, ma dovrai piuttosto creare una funzione per ottenere il pattern in base alla stringa in input.

    Confermi?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Confermi?
    confermo

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Data la mia ignoranza su asp, access, mdb, fammi capire se possiamo prendere come base un sistema del genere, riguardo la creazione di una funzione che si possa usare per costruire il pattern nella query sql:
    Expressing basic Access query criteria as regular expressions

    A quel punto, dentro la funzione si va a ciclare i caratteri della stringa e rimpiazzare le vocali con le corrispettive parti del pattern.

    Se può andare bene provo a buttare giù qualcosa.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    si, l'idea mi sembra quella che hai linkato.

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    non ho strumenti adatti per testare codice asp (o vbscript o quel che è) per cui ti posto uno pseudo-codice di quello che dovrebbe fare la funzione per ottenere il pattern da una data stringa

    Vedi tu se riesci ad adeguarlo

    codice:
    str = "test"
    pattern = ""
    For i=1 To Len(str)
       classeCaratteri = ""
       carattere = Mid(str,i,1)
       Select Case carattere
          Case "a"
             classeCaratteri = "aà"
          Case "e"
             classeCaratteri = "eèé"
          Case "i"
             classeCaratteri = "iì"
          Case "o"
             classeCaratteri = "oò"
          Case "u"
             classeCaratteri = "uù"
       End Select
       If classeCaratteri = "" Then
          frammentoPattern = carattere
       Else
          frammentoPattern = "[" & classeCaratteri & "]"
       End If
       pattern = pattern & frammentoPattern
    Next
    pattern = "^" & pattern & "$"
    Data la stringa "test" dovrebbe restituire "^t[eèé]st$"

    In sostanza, ogni vocale trovata nella stringa viene sostituita con la classe di caratteri dove, oltre lo stessa lettera non accentata, sono comprese le corrispettive varianti accentate.

    Ripeto, sono ignorante su questo linguaggio ma il metodo dovrebbe funzionare.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    grazie andrea, faccio qualche prova e ti ragguaglio

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.