订购使用波兰语字母

时间:2013-12-16 10:33:34

标签: mysql sql sorting sql-order-by

我对Order By有疑问。例如,我有三个单词,波兰语:“Zzzz”,“Żubr”和“Zajawka”。

他们应该那样:

Zajawka
Zzzz
Żubr

原因Ż字母在波兰alfabet的Z之后。但它对我有好处:

Zajawka
Żubr
Zzzz

所以它像Z字母那样对待字母......

2 个答案:

答案 0 :(得分:4)

我假设数据库不是使用波兰语排序规则创建的。但您可以在排序时始终指定它:

SELECT   name
FROM     mytable
ORDER BY name COLLATE SQL_Polish_Cp1250_CS_AS_KI_WI

编辑:
我误读了标签,并认为这是SQL Server。如果你有不同的RDBMS,请在评论中回答@RaphaëlAlthaus的问题。

答案 1 :(得分:2)

在从数据库中提取记录后,您必须重新排序,因为它将Ż视为英文字符z。

你需要编写自定义重新排序方法,你只需在z之后排序。

您可以获取除Ż。

以外的所有记录

然后在另一个查询中获取只是Ż的所有记录,并在预取列表的末尾附加此列表。

选择名称中没有Ż字符的所有记录 从客户端中选择*其中client.name!= Ż AND(我的过滤器)

从客户端选择*其中client.name == Ż AND(我的过滤器)

代码隐藏(C#):

SqlDataReader dr = cmd.ExecuteReader();

           List<Product> myList = new List<Product>();

        while (dr.Read())
        {
            myList.Add(GetFromReader(dr));
        }

        if (dr.NextResult())
        {
            while (dr.Read())
            {
                myList.AddRange(GetFromReader(dr));
            }
        }