web-dev-qa-db-ja.com

System.Data.SQLiteでユーザー定義関数を作成/使用しますか?

ユーザー定義関数と照合シーケンスユーザー定義関数と照合シーケンスが完全にサポートされているため、多くの場合、SQLiteに機能がない場合でも、お気に入りの.NET言語で自分で作成できます。 UDFと照合シーケンスの記述はかつてないほど容易になりました

ここにあるC# SQLite ADO.NET プロバイダーにこのビットを見つけ、ユーザー定義関数の実装/使用方法に関するドキュメントの理解に問題がありました。

誰もがこの失われた初心者の方法を説明したり、実例を提供したりできますか?

42
Ashlocke

Robert Simpsonは、sqliteクエリで使用できるREGEX関数の優れた例を持っています。

// taken from http://sqlite.phxsoftware.com/forums/p/348/1457.aspx#1457
[SQLiteFunction(Name = "REGEXP", Arguments = 2, FuncType = FunctionType.Scalar)]
class MyRegEx : SQLiteFunction
{
   public override object Invoke(object[] args)
   {
      return System.Text.RegularExpressions.Regex.IsMatch(Convert.ToString(args[1]),Convert.ToString(args[0]));
   }
}

// example SQL:  SELECT * FROM Foo WHERE Foo.Name REGEXP '$bar'
58
Jarrod Dixon