SQLite中的越南语Unicode文本搜索

时间:2013-06-09 06:17:14

标签: ios search unicode sqlite southeast-asian-languages

我打算编写一个使用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

更新2

Alias 给了我一个想法:创建我自己的整理顺序。如果有效,我会发布一个跟进。

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT * FROM towns WHERE title COLLATE UTF8CI LIKE '%hai son%';

与此处的答案相关:How do I convert a column to ASCII on the fly without saving to check for matches with an external ASCII string?

答案 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);
...
相关问题