在Sqlite中忽略查询中的标点符号

时间:2014-01-07 01:46:36

标签: java android sqlite punctuation

我正在使用Sqlite和Android(Java)。 我有一个包含带有希伯来语标点符号的文本的数据库。

我的问题是,当我为某个值做一个SELECT(没有标点符号)时,我没有得到所有结果,因为我猜数据库不会忽略标点符号并将标点符号视为普通字符

在搜索之后,我找到了一些答案,说我应该为它注册一个排序规则(sqlite3_create_collat​​ion)。

由于我从未使用过排序规则,我想如果有人会给我一个关于如何注册并使用它来获得正确的完整结果的提示。

例如:

SELECT * FROM sometable WHERE punctuated_field LIKE '%re%'

我想得到以下两点:

dream
drém

目前我只是:

dream

我阅读了this相关答案,但没有设法理解如何在我的查询或Java代码中实现它。

我很乐意让某人编写我在代码中编写所需的完整查询。

提前致谢!

2 个答案:

答案 0 :(得分:2)

Android API不允许注册自定义归类。

您必须使用内置排序规则或Android LOCALIZED and UNICODE排序规则。

答案 1 :(得分:2)

由于Android sqlite API没有公开任何内容来设置自定义排序规则,因此您必须找到其他方法来解决问题。

一种方法是添加另一列,使字符串标准化,即删除重音符号(“标点符号”)。然后在此规范化列上进行LIKE匹配,并使用原始列进行显示。这样做的成本是更大的数据大小和插入数据库时​​的一些额外代码。

我在这里描述了一种这样的规范化方法: How to ignore accent in SQLite query (Android) - 我不知道与希伯来字符有什么关系。