Caso ricerca maiuscole senza regole supplementari?
-
12-09-2019 - |
Domanda
Sto cercando di trovare un metodo di confronto in MySQL (la mia versione è 5.0) in cui le stringhe che differiscono nel caso in cui sono considerati lo stesso, ma non ci sono altre regole come:
A = A
e così via.
Ho cercato di trovare la giusta collazione qui: http: // www. collation-charts.org/mysql60/by-charset.html ma sembra che il confronto che sto cercando non esiste.
Non posso usare nella query SQL: SELECT ... WHERE inferiore (Colonna1) = inferiore (column2), perché gli indici su colonne column1 e column2 non vengono utilizzati e quindi la mia domanda è terribile lento
.Grazie per qualsiasi suggerimento!
Soluzione
Mi è stato dato un consiglio: è sufficiente avere tabella come questa: id, parola, word_in_lowercase .. è vero che i dati sono ridondanti ma per il resto soddisfa tutte le mie esigenze.
L'aggiornamento automatico delle word_in_lowercase può essere fatto tramite trigger o un po 'di programmazione.
Altri suggerimenti
Che tipo di regole di confronto impostato nelle tabelle in questione? Attualmente sto usando un sacco di tavoli con utf8_hungarian_ci
a causa di questo è case-insensitive.
http://dev.mysql.com/doc /refman/5.0/en/case-sensitivity.html indica che le stringhe non binari sono case insensitive per impostazione predefinita. Hai provato a vedere che non funziona correttamente senza l'utilizzo inferiore ()?
Perché non utilizzare tutte le funzioni di ricerca testo di MySQL per la ricerca?
Per le attività come la vostra sto usando la partita contro la funzione.
Leggi le specifiche tecniche all'indirizzo mysql.com chiarire - collegamento
Un esempio:
SELECT * FROM customer WHERE status = 1 AND MATCH (person, city, company, zipcode, tags) AGAINST ('".$searchstring."' IN BOOLEAN MODE)
E questo sarà eseguito case insensitive.