Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL non tratta ı come i?

Facendo riferimento a http://mysql.rjweb.org/utf8_collations.html , vedo che ı=i in 3 regole di confronto:utf8_general_ci, utf8_general_mysql500_ci, utf8_turkish_ci. Tuttavia, per il confronto turco, I=ı ordina prima di altri io accentati. In tutte le altre regole di confronto ı ordina dopo tutto, come se fosse trattata come una lettera separata.

Nel frattempo İ=I in tutte le regole di confronto tranne utf8_turkish_ci.

La trama si infittisce con MySQL 8.0. utf8mb4_tr_0900_ai_ci (solo) ha questo ordinamento:

I=Ì=Í=Î=Ï=Ĩ=Ī=Ĭ=Į=ı sort before  i=ì=í=î=ï=ĩ=ī=ĭ=į=İ

Nel frattempo ä=Ä e corrispondono alla maggior parte delle altre A accentate per la maggior parte delle regole di confronto (comprese quelle turche).

In conclusione:sembra che utf8[mb4]_general_ci sia l'unica confronto in 5.7 o 8.0 che tratterà sempre una i senza punti (o una I con punti) uguale a una 'i/I regolare e allo stesso tempo ignora le dieresi.

Avvertenza:le regole di confronto "generali" non testano più di un carattere alla volta. Cioè, un "umlaut senza spaziatura" più una vocale non sarà considerato uguale alla combinazione.

In quel link... L'unico carattere æ è ordinato come le due lettere ae per alcune collazioni. È indicato da:Aa ae=æ az . In circa la metà delle altre regole di confronto, il carattere æ è trattata come una lettera separata; questo è indicato dal fatto che è dopo az e prima di b . O anche dopo zz per le collazioni scandinave. Questo concetto di lettera separato a volte si applica a coppie di lettere, ad esempio cs (ungherese) e ch (spagnolo tradizionale).