我对Order By有疑问。例如,我有三个单词,波兰语:“Zzzz”,“Żubr”和“Zajawka”。
他们应该那样:
Zajawka
Zzzz
Żubr
原因Ż字母在波兰alfabet的Z之后。但它对我有好处:
Zajawka
Żubr
Zzzz
所以它像Z字母那样对待字母......
答案 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));
}
}