簡體   English   中英

MySQL的。 json文件錯誤的順序包含utf-8字符串

[英]MySQL. Wrong order by json fied containing utf-8 string

我有一個json類型的字段title ,其中包含不同語言環境的翻譯。 看起來像

{'en'=>'Title', 'uk'=>'Заголовок'}

我正在嘗試通過翻譯訂購記錄

select id, slug, title->>'$.uk' as locale_title from blog_posts
order by locale_title

它適用於en區域與拉丁符號,但對於uk西里爾字母符號(烏克蘭)語言環境,我得到了錯誤的順序一樣і, а, б, я 對於其他文本字段(不是json),排序按預期進行а, б, і, я

附加信息

MySQL版本:5.7.25

數據庫整理:'utf8mb4_unicode_ci'

事實證明,數據庫的排序規則和json運算符的排序規則是不同的:

collation(title->>'$.uk') //utf8mb4_bin
collation(other_field) //utf8mb4_unicode_ci

為了解決我的問題,我應該為json值顯式設置utf8mb4_unicode_ci排序規則:

select id, slug, title->>'$.uk' as locale_title from blog_posts
order by locale_title collate utf8mb4_unicode_ci

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM