android - 在 Android SQLite 中使用 COLLATE - 在 LIKE 语句中忽略语言环境

标签 android database sqlite locale collate

在 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/

相关文章:

android - 使用移动应用程序保护通信 [真实性、隐私和完整性]?

java - 如何设置平板电脑的选项卡布局图标大小

android - Android的Jetpack DataStore(alpha07版本)的正确实例创建

mysql - 我想在我的 mysql 表中启用显示或隐藏

c# - 用 C# 打开 .sqlite 文件

swift - 无法为 SELECT 命令绑定(bind) sqlite 语句

c++ - 在 sqlite3 中更快的批量插入?

Android Ndk(未找到 xxxxx 的实现)

android - SQLite 数据库查询非常慢(SQLite Asset Helper)

android - 使用 HttpURLConnection 从 Android 发送 HTTP POST