iOS - Как выполнить поиск без учета диакритических знаков с помощью SQLite.swift?

Я работаю с SQLite.swift. Есть ли способ сделать диакритически нечувствительный запрос LIKE в SQLite? Например, этот запрос:

SELECT * FROM users WHERE name LIKE "thu%"

вернется:

thử
thu
thư
etc.

1 ответ

Из документации:

Мы можем создавать собственные последовательности сортировки, вызывая createCollation на соединение с базой данных.

try db.createCollation("NODIACRITIC") { lhs, rhs in
    return lhs.compare(rhs, options: .DiacriticInsensitiveSearch)
}

Мы можем сослаться на пользовательское сопоставление, используя Custom член Collation перечисление.

restaurants.order(collate(.Custom("NODIACRITIC"), name))
// SELECT * FROM "restaurants" ORDER BY "name" COLLATE "NODIACRITIC"

В вашем случае вы можете выполнить следующий запрос впоследствии:

SELECT * FROM users WHERE name COLLATE NODIACRITIC LIKE 'thu%'
Другие вопросы по тегам