首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安卓,不区分发音符号的SQLite搜索

安卓,不区分发音符号的SQLite搜索
EN

Stack Overflow用户
提问于 2012-09-27 22:46:02
回答 1查看 3.1K关注 0票数 20

我正在尝试查询android中的SQLite数据库,其中带重音的法语字符应该像处理普通拉丁字符一样处理,例如:

代码语言:javascript
复制
SELECT * FROM x WHERE y LIKE %cafe%

应该返回

代码语言:javascript
复制
café, câfè, ...

我已经用谷歌搜索了一整天,阅读了所有关于stackoverflow的帖子。向表中添加包含规范化标题的列是不可能的,因为数据库是从服务器获取并由第三方维护的。

使用其他文章中提到的排序规则,如

代码语言:javascript
复制
Latin1_general_CI_AI

也没有选择,因为SQLite只支持3个(在Android5中)排序规则,这对我没有帮助。

将android中的数据库设置为

代码语言:javascript
复制
Locale.FRENCH

和使用排序规则

代码语言:javascript
复制
COLLATE LOCALIZED

同样也不能达到目的。

我知道在iOS (DiacriticInsensitiveSearch)中有一些标志可以自动完成,所以我希望这样的东西也可以在安卓上使用。

有什么想法吗?提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2012-10-08 15:34:55

无法向表中添加包含规范化标题的列,因为数据库是从服务器获取并由第三方维护的。

您可以使用规范化的列和原始表的外键创建单独的表。我认为这是你在android上使用sqlite的唯一选择。

或者,如果您可以以某种方式创建用户定义的函数remove_diacritics,那么您可以这样选择:

代码语言:javascript
复制
SELECT * FROM x WHERE remove_diacritics(lower(y)) 
LIKE remove_diacritics(lower(%cafe%))

但要注意,x.y上的索引不会被使用。您也可能不需要lower。但据我所知,在sqlite上创建函数并不容易,如果可能的话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12624078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档