2013-03-05 8 views
10

Qualcuno sa se esiste una regola utf8_unicode_cs per MySQL? Finora, le mie ricerche si sono arenate. Se semplicemente non esiste ancora, è abbastanza semplice crearne uno? O in qualche modo usa utf8_unicode_ci o utf8_bin ma "simula" ciò che ci si aspetterebbe da una collazione utf8_unicode_cs?Esiste una regola di confronto utf8_unicode_cs?

risposta

11

Mi sono imbattuto nello stesso problema e dopo un po 'su Google, sembra che MySQL non lo includa. Per "simulare", come dici tu,

1) Per garantire maiuscole e minuscole nel DB: impostare la colonna della tabella di utf8_bin collazione
Questo permette:

  • severe SELECT: SELECT "Joe" NON restituirà righe con "joe"/"joE"/"jOe"/etc
  • indice univoco rigoroso: una colonna con un indice UNIQUE tratterà le differenze tra maiuscole e minuscole come valori diversi. Ad esempio, se viene utilizzata una regola di confronto utf8_unicode_ci, l'inserimento di "Joe" su una tabella che ha già "joe" provocherà l'errore "Duplicate key". Se viene utilizzato ut8_bin, l'inserimento di "Joe" funzionerà correttamente.

2) Per ottenere l'ordine corretto nei risultati: aggiungere le regole di confronto per la query SQL:

SELECT ... ORDER BY column COLLATE utf8_unicode_ci 
Problemi correlati