Create/Use User-defined functions in System.Data.SQLite?
Asked Answered
U

1

51

User-Defined Functions & Collating Sequences Full support for user-defined functions and collating sequences means that in many cases if SQLite doesn't have a feature, you can write it yourself in your favorite .NET language. Writing UDF's and collating sequences has never been easier

I spotted this bit on the C# SQLite ADO.NET provider l found here, and was having problems understanding the documentation on how to implement/use user-defined functions.

Could anyone explain how to, or provide any working examples for this lost newbie?

Unionist answered 5/10, 2008 at 22:0 Comment(0)
R
70

Robert Simpson has a great example of a REGEX function you can use in your sqlite queries:

// 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'
Rees answered 5/10, 2008 at 23:33 Comment(2)
For reference, see this answer how to bind it to a SQLiteConnection.Termless
Your answer is correct. But the example SQL won't use the defined SQLiteFunction but rather the built-in function. One would call SELECT * FROM foo WHERE REGEXP(name, 'mySearchText')Aurora

© 2022 - 2024 — McMap. All rights reserved.