在 Android 中创建 SQLite 数据库时,我设置了数据库语言环境 - db.setLocale(new Locale("cz_CZ"))。这是捷克语言环境。
SELECT 语句有效并考虑了语言环境,例如:
SELECT * from table WHERE name='sctzy' COLLATE LOCALIZED
将找到条目“ščťžý”。
但是使用 LIKE 会失败:
SELECT * from table WHERE name LIKE '%sctzy%' COLLATE LOCALIZED
没有返回任何行。
顺便说一句。 Android 中没有 java.text.Normalized 类。我想我可以用规范化的文本制作第二列,去除特殊字符,这将用于搜索 - 但我缺少一个类或如何规范化字符串的方法。
最佳答案
你看过SQLite documentation for LIKE吗? ?它提供了有关非 ASCII 字符和错误的信息。也许 Android 安装了旧版本的 SQLite,这是一个问题。
不幸的是,我认为第二个标准化列可能是您的最佳选择。
关于android - 在 Android SQLite 中使用 COLLATE - 在 LIKE 语句中忽略语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3480999/