SQL’s “like” patterns to compare in .Net

I wanted to use   SQL’s “like” patterns to compare in .Net.
I found the good C# implementation of  function in thread Using Regex to create a SQL’s “like” like function.
The function  IsSqlLikeMatch works fine, but I’ve noticed that the search is case-sensitive.
It’s also doesn’t match % if there are multiple lines.
But it was easy to change by modifying IsMatch call to

return Regex.IsMatch(input, pattern, RegexOptions.IgnoreCase | RegexOptions.Singleline);

Note that it could be very serious performance hit, if the pattern is started with %.


E.g for patternsPattern=’%Part1%Part2%’ and long message (Length 30720) time spent 40 sec!

but for pattern ‘Begin%Part1%Part2%’ and the same long message  time spent is almost 0 .The test code with time measured:



  DateTime start = DateTime.Now;

DebugOutputHelper.TracedLine(“IsSqlLikeMatch sPattern=” + sPattern + ” errorMsg.Length “ + errorMsg.Length + ” Started “ + start.ToString());

bRet = errorMsg.IsSqlLikeMatch(pattern);

TimeSpan timeDifference = DateTime.Now – start;

DebugOutputHelper.TracedLine(“IsSqlLikeMatch sPattern=”+ sPattern +” errorMsg.Length “+ errorMsg.Length +

” time spent “ + timeDifference.ToString());