我想根据德语使用的规则从SQLite订购我的结果。这意味着像“ ”这样的字符被视为“ae”,或者“ ”被视为“ue”。
此时解决方案如下所示:
SELECT * FROM data ORDER BY REPLACE(REPLACE(REPLACE(UPPER(einrichtung),'�','AE'),'�','OE'),'�','UE') LIMIT 0,20
解决方案不应涉及安装更多工具或修改SQLite服务,因为无论在何处部署,该项目都应该“开箱即用”。
答案 0 :(得分:0)
我遇到了同样的问题而且仍然无法实现。
这是来自sqlite.org常见问题解答的引用:
问:Unicode字符的不区分大小写的匹配不起作用。
答:SQLite的默认配置仅支持ASCII的不区分大小写的比较 字符。这样做的原因是完全使用Unicode 不区分大小写的比较和大小写转换需要表和 逻辑几乎是SQLite库大小的两倍。该 SQLite开发人员认为任何需要完整Unicode的应用程序 案例支持可能已经具有必要的表格和功能 所以SQLite不应占用空间来复制这种能力。 SQLite不是默认提供完整的Unicode案例支持 提供链接外部Unicode比较和 转换例程。应用程序可以使内置NOCASE重载 整理序列(使用sqlite3_create_collation())和内置 like(),upper()和lower()函数(使用 sqlite3_create_function())。 SQLite源代码包括一个" ICU" 执行这些重载的扩展。或者,开发人员可以写他们的 基于他们自己的Unicode感知比较例程自己的重载 已经包含在他们的项目中。
答案 1 :(得分:0)
你必须用UTF-8 / UTF-16做所有事情。 例如,如果你正在处理PHP,你也可以使用utf8_encode / utf8_decode。
另见http://www.sqlite.org/pragma.html#pragma_encoding
(我知道这个问题很老,但是人们仍然遇到正确编码问题。)
答案 2 :(得分:-4)
也就是说,您似乎想要更改这些字符之间的排序规则行为。 This extension可能对您有所帮助。如果您不喜欢任何提供的排序规则,我认为您可以自行编程,如上所述 here