Lower/Upper в SQLite

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

Реклама

Мы в соцсетях

tw tg yt gt