Domanda

Sto lavorando su un semplice script di ricerca che guarda attraverso due colonne di una tabella specifica. In sostanza sto cercando una corrispondenza tra il numero uno di una società o il loro nome. Sto utilizzando l'istruzione LIKE in SQL perché sto usando le tabelle InnoDB (che significa non esistono ricerche full-text).

Il problema è che sto lavorando in un ambiente bilingue (francese e inglese) e alcuni dei personaggi in francese ho accenti. Vorrei caratteri accentati da considerare la stessa come la loro controparte non accentata, in altre parole e = e, e = e, a = a, ecc Quindi, ha un sacco di domande relative alla questione, ma nessuno sembra funzionare per me.

Ecco la mia dichiarazione di SQL:

SELECT id, name FROM clients WHERE id LIKE '%éc%' OR name LIKE '%éc%';

Vorrei che trovare "école" e "ecole", ma trova solo "école".

Vorrei anche sottolineare che i miei tavoli sono tutti utf8_general_ci.

Help me StackOverflow, sei la mia unica speranza! :)

È stato utile?

Soluzione

ho intenzione di offrire un'altra risposta per voi.

Ho appena letto che utf8_general_ci è accento-insensitive così si dovrebbe essere OK.

Una soluzione è quella di utilizzare

 mysql_query("SET NAMES 'utf8'"); 

Questo dice al cliente che cosa set char per inviare istruzioni SQL in.

Un'altra soluzione sembra essere quella di utilizzare la funzione HEX() di MySQL per convertire i caratteri accentati nei loro valore esadecimale. Ma non riuscivo a trovare nessuna esempi di buone di questo lavoro e dopo aver letto la documentazione MySQL per HEX() sembra che probabilmente non funzionerà.

Altri suggerimenti

È forse dovrebbe prendere in considerazione la conversione dei caratteri problematici alle loro controparti inglesi, quindi la loro memorizzazione in una colonna diversa, forse chiamato searchable o simili. Si farebbe di causa necessità di aggiornare questo ogni volta che la vostra colonna principale è stato aggiornato.

Si potrebbe quindi avere due colonne, una contenente i caratteri accentati e uno contenente la pianura contenuto ricercabile inglese.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top