sql >> Database >  >> RDS >> Mysql

MySQL behandelt ı niet als i?

Verwijzend naar http://mysql.rjweb.org/utf8_collations.html , ik zie dat ı=i in 3 sorteringen:utf8_general_ci, utf8_general_mysql500_ci, utf8_turkish_ci. Voor de Turkse sortering geldt echter:I=ı sorteert voor andere I's met accenten. In alle andere sorteringen ı sorteert tenslotte ik's, alsof het als een afzonderlijke letter wordt behandeld.

Ondertussen İ=I in alle sorteringen behalve utf8_turkish_ci.

De plot wordt dikker met MySQL 8.0. utf8mb4_tr_0900_ai_ci (alleen) heeft deze volgorde:

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

Ondertussen ä=Ä en ze komen overeen met de meeste andere geaccentueerde A's voor de meeste sorteringen (inclusief de Turkse).

Bottom line:het lijkt erop dat utf8[mb4]_general_ci de enige collatie in 5.7 of 8.0 is die altijd een puntloze-i (of gestippelde-I) gelijk zal behandelen aan een 'gewone i/I en tegelijkertijd negeer umlauts.

Waarschuwing:de "algemene" sorteringen testen niet meer dan één teken tegelijk. Dat wil zeggen, een "umlaut zonder spatiëring" plus een klinker wordt niet gelijkgesteld aan de combinatie.

In die link... Het ene teken æ wordt op dezelfde manier gesorteerd als de twee letters ae voor sommige sorteringen. Dat wordt aangegeven door:Aa ae=æ az . In ongeveer de helft van de andere sorteringen, het teken æ wordt behandeld als een aparte brief; dit wordt aangegeven doordat het na az . staat en voor b . Of zelfs na zz voor Scandinavische sorteringen. Dit aparte letterconcept is soms van toepassing op letterparen, bijvoorbeeld cs (Hongaars) en ch (traditioneel Spaans).




  1. Getypte resultaten ophalen uit ActiveRecord onbewerkte SQL

  2. Wat zijn Resource#'s?

  3. Hoe een door komma's gescheiden tekenreeks in Oracle te splitsen

  4. Wat is het DATALENGTH()-equivalent in MySQL?