我打算编写一个使用SQLite作为后端的iOS应用程序。我的数据库包含越南文本,例如“HảiSơn”。用于Google搜索的用户想要输入搜索字词,例如“hai son”,以便查找上面的文字。我尝试了以下查询:
SELECT * FROM towns WHERE title LIKE '%hai son%';
我得到了0记录。我该如何使它工作?我知道谷歌和其他搜索引擎处理这种情况,所以可以做到。我也不想让我的用户输入带有完全变音符号的越南语文本,因为并非所有用户都知道如何操作。
我查看了sqlite3文档,看起来只有三个有效的归类序列:BINARY,NOCASE和RTRIM。我错过了什么吗?。
我的表创建于:
CREATE TABLE towns ( sid INTEGER PRIMARY KEY NOT NULL, title TEXT )
到目前为止,我只使用sqlite3命令行从CSV文件创建数据库,表格和导入文本。
我的sqlite3版本为3.7.12
Alias 给了我一个想法:创建我自己的整理顺序。如果有效,我会发布一个跟进。
答案 0 :(得分:1)
试试这个:
SELECT * FROM towns WHERE title COLLATE UTF8CI LIKE '%hai son%';
答案 1 :(得分:0)
我知道这是旧线程,但我找到了解决方案,因此将其发布给其他人。如果您使用的是sqlite3库,则可以使用sqlite3_bind_text()
如下所示
...
sqlite3_stmt *detailStmt;
NSString *t1=@"%%Hải Sơn%%";
const char *sql = "SELECT * FROM towns WHERE title LIKE ?";
if(sqlite3_prepare_v2(database, sql, -1, &detailStmt, NULL) == SQLITE_OK)
{
sqlite3_bind_text(detailStmt, 1, [t1 UTF8String], -1, SQLITE_TRANSIENT);
...