问题排序瑞典字符ÅÄÖMySQL

Fre*_*rik 10 mysql sorting character

我正在尝试使用asc或desc对列表进行排序 - 具体取决于用户选择的内容.在列表中我有瑞典字符ÅÄÖ,它就在这里问题出现了.我有以下列表:

(First list)
Stängd
Stängd
Öppen
Krävs ej
Krävs ej
Run Code Online (Sandbox Code Playgroud)

(代表;Stängd=已关闭,Öppen=已打开,Krävssj=不需要)

列表应该排序 - 取决于用户选择的内容;

Öppen
Stängd
Stängd
Krävs ej
Krävs ej
Run Code Online (Sandbox Code Playgroud)

要么

Krävs ej 
Krävs ej
Stängd 
Stängd 
Öppen 
Run Code Online (Sandbox Code Playgroud)

但现在是第一个列表出现了.所以问题是"Ö" - 字符.我的数据库和值所在的字段具有排序规则utf8_general_ci,因此这不是问题所在.字符"Ö"在两个数据库中都是正确的(通过PHPMyAdmin查找)并在打印出来时输出正确.

我的代码看起来像这样:

$querystr = "
    SELECT wposts.*
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id
    AND wpostmeta.meta_key = '$sort_by'
    AND wposts.post_type = 'sida'
    AND wposts.post_status = 'publish'
    ORDER BY wpostmeta.meta_value $sort_order";
Run Code Online (Sandbox Code Playgroud)

这怎么出现,我该如何解决?

Pek*_*ica 25

我的数据库和值所在的字段具有整理utf8_general_ci,因此这不是问题

但它是.:)不同的排序规则有不同的排序顺序,以及它们如何解释变音符号的不同方式.

utf8_general_ciÖ与... 排序O.试试吧utf8_swedish_ci.这将具有正确的排序顺序,其中(IIRC)是ÄAÖ字母表的末尾.

有关背景信息,请参见9.1.7.8.整理效果的例子

  • 虽然我已经知道瑞典整理将修复排序,但我没有意识到你需要重新填充表格才能使其正常工作.在确认解决方案之后我尝试了它并且它起作用了. (3认同)
  • 好厉害!做到了。那我错了。你每天学习新的东西。再次感谢! (2认同)
  • 补充表是不需要的.尽管可能需要更改列上的排序规则. (2认同)

Ign*_*ams 7

一般的整理地方ÖO.如果你想要Ö在字母表的末尾,那么你需要使用utf8_swedish_ci.