Lower/Upper в SQLite
- [SQLiteFunction(Name = "_lower", Arguments = 1, FuncType = FunctionType.Scalar]
- class Lower : SQLiteFunction {
- public override object Invoke(object[] args) {
- if (args.Length == 0 || args[0] == null) return null;
- return (args[0] as string)?.ToLower();
- }
- }
- [SQLiteFunction(Name = "_upper", Arguments = 1, FuncType = FunctionType.Scalar]
- class Upper: SQLiteFunction {
- public override object Invoke(object[] args) {
- if (args.Length == 0 || args[0] == null) return null;
- return (args[0] as string)?.ToUpper();
- }
- }
- // Использование: SELECT * FROM table WHERE _lower(name) = "foo"
Функции Lower и Upper в дефолтной сборке SQLite (без ICU) не поддерживают работу с не-ASCII символами. Решить эту проблему можно с помощью реализации внешних функций (однако такое не рекомендуется).