好像不适用于俄罗斯符号? (Swift, SQLite)

Like does not work with Russian symbols? (Swift, SQLite)

我将 like 与 lowercaseString 和俄语符号一起使用,但 LOWER 不会在查询中将它们转换为小写。我试图创建自己的功能,但它对我不起作用。如何解决这个问题?

看了SQLite的文档,了解到需要连接ICU库。如何在此插件中完成此操作?

图书馆:stephencelis/SQLite.swift (https://github.com/stephencelis/SQLite.swift) 感谢您的帮助。

// in name value: ПРИВЕТ from database
let search_name = "Привет"
user.filter(name.lowercaseString.like("%" + search_name.lowercased() + "%"))

SQLite LOWER 仅适用于 ASCII。如果您想对俄语(或 ASCII 以外的任何其他符号)不区分大小写,请使用 FTS3/FTS4 https://www.sqlite.org/fts3.html (or FTS5 https://www.sqlite.org/fts5.html).

SQLite.swift有对应的全文检索模块https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md#full-text-search

要在您的项目中使用现有数据库,您应该通过 FTS 模块连接到虚拟 table 并使用 .match

过滤查询
    // CREATE VIRTUAL TABLE "table" USING fts4("row0", "row1"), if not exists
    try db.run(table.create(.FTS4(row0, row1), ifNotExists: true))
     
    // SELECT * FROM "table" WHERE "row0" MATCH 'textToMatch*'      
    try db.prepare(table.filter(row0.match("\(textToMatch)*")))
    
    // SELECT * FROM "table" WHERE "any row" MATCH 'textToMatch*' 
    try db.prepare(table.match("\(textToMatch)*")))