Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    255

    SQL - Ricerca risultati diacritici

    Ciao a tutti

    Il mio problema è questo, effettuo una ricerca con una parola chiave diacritica (ossia senza accenti senza apostrofi, niente) in un database di città dove c'è il nome originale (es: Kandahār)

    il problema è che non mi da risultati, se io scrivo kandahar non mi trova Kandahār

    la query che faccio è semplicissima

    "SELECT * FROM citta WHERE nome LIKE '%$key'"

    come la posso modificare per considerare i risultati del campo nome come diacritici?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    se nel campo c'è scritto solo Kandahār non dovrebbero nemmeno servire i due %%.
    tene hai messo uno solo...
    hai provato cercare un'altra città?
    hai provato con phpmyadmin? il cerca di phpmyadmin è ottimo...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    255
    trovato la soluzione

    " SELECT * FROM citta WHERE nome COLLATE utf8_unicode_ci = '$key' "

    in questo modo cambia il COLLATE di default al campo varchar e cosi corrisponde a quello che cerco

    spero sia di utilità a qualcun'altro
    ciauz!


  4. #4
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619
    Forse non ho capito bene e vorrei avere una conferma.

    Intendi che usando "COLLATE utf8_unicode_ci" ti restituisce il record che contiene Kandahār anche se nella query scrivi Kandahar?

    Cioè in questo modo posso estrarre per esempio tutti i record che contengono città anche se nella query metto citta ?

    Aspetto la conferma

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    255
    praticamente, per farti capire, quando crei un campo nel database, oltre al nome e il tipo puoi determinare il COLLATE, che è il set di caratteri da utilizzare per quel campo

    quando nella query aggiungi "WHERE campo COLLATE utf8_unicode_ci = $variabile" non fai altro che cambiare quel valore del campo

    purtroppo ho constatato che non funziona proprio con tutti, per esempio Zürich non esce con zurich. esistono infatti piu collate per l'utf8, ecco quali :

    utf8_bin
    utf8_czech_ci
    utf8_danish_ci
    utf8_esperanto_ci
    utf8_estonian_ci
    utf8_general_ci
    utf8_hungarian_ci
    utf8_icelandic_ci
    utf8_latvian_ci
    utf8_lithuanian_ci
    utf8_persian_ci
    utf8_polish_ci
    utf8_roman_ci
    utf8_romanian_ci
    utf8_slovak_ci
    utf8_slovenian_ci
    utf8_spanish2_ci
    utf8_spanish_ci
    utf8_swedish_ci
    utf8_turkish_ci
    utf8_unicode_ci


    devo capire se uno di questi va bene per tutti, oppure se devo usarne uno a seconda del caso

  6. #6
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619
    Avevo già letto a riguardo,

    penso che il general_ci sia il migliore per il tuo caso ma che cmq non prenda in considerazione tutto come vorremmo.

    Facci sapere se fai la prova

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.