2 回答
TA贡献1825条经验 获得超4个赞
在数据库方面,CONTAINS
如果您正在寻找模糊或不太精确的匹配,我会使用。我会提到这一点,以防您将原始帖子简单化。与LIKE
领先的通配符不同,它可以使用INDEX
使速度更快的an 。LIKE
以这种方式使用将导致表扫描。您必须创建FULLTEXT INDEX
要使用的CONTAINS
.
另一种方法是使用CHARINDEX
. 这可以使用索引,但不能保证。与LIKE
您的环境相比,我会对此进行测试。
where (charindex('A',col) > 0 and charindex('B',col) > 0) or (charindex('C',col) > 0 and charindex('D',col) > 0)
TA贡献1806条经验 获得超8个赞
我不知道这是否是最好的正则表达式替换,但它有效
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication58
{
class Program
{
static void Main(string[] args)
{
string pattern = @"(?'prefix'[^\w]+)?(?'var1'\w+)(?'operator'\s+(AND|OR)\s+)(?'var2'\w+)(?'suffix'.*)?";
string input = "(A AND B) OR (C AND D)";
Match match = null;
do
{
match = Regex.Match(input, pattern);
if (match.Success) input = Regex.Replace(input, pattern, ReplaceVars(match));
} while (match.Success);
}
public static string ReplaceVars(Match m)
{
return m.Groups["prefix"] + "col LIKE %'" + m.Groups["var1"].Value + "'" + m.Groups["operator"] + "col LIKE %'" + m.Groups["var2"].Value + "'" + m.Groups["suffix"];
}
}
}
- 2 回答
- 0 关注
- 194 浏览
添加回答
举报