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%'