如何匹配存储在SQL表中的模式

如何匹配存储在SQL表中的模式,sql,sql-server,Sql,Sql Server,我正在尝试设置一个系统,在这个系统中,我可以将包含数据占位符的短语存储在一个可以由用户输入字符串匹配的表中。例如,今天是[日期]将存储在列中,并可能与短语今天是星期二正匹配。解决方案需要快速。后端是MSSQL和.NET。有什么想法吗?您在SQL中的匹配选项如下所示: WHERE ColumnName = 'today is Tuesday' 或 或 任何一个都会很快。因此,您可以使用.NET代码构建一个包含所有潜在占位符替换的IN列表 请注意以下问题: WHERE ColumnName LIK

我正在尝试设置一个系统,在这个系统中,我可以将包含数据占位符的短语存储在一个可以由用户输入字符串匹配的表中。例如,
今天是[日期]
将存储在列中,并可能与短语
今天是星期二
正匹配。解决方案需要快速。后端是MSSQL和.NET。有什么想法吗?

您在SQL中的匹配选项如下所示:

WHERE ColumnName = 'today is Tuesday'

任何一个都会很快。因此,您可以使用.NET代码构建一个包含所有潜在占位符替换的IN列表

请注意以下问题:

WHERE ColumnName LIKE '% is today'

这将更慢,因为前导通配符使SQL Server无法使用列名索引(如果存在),它将执行表扫描。

我建议在.NET中编写一些代码来执行此操作。您需要存储“今天是[date]”还是只存储“今天是”并使用另一列指示“[date]”呢'部分?这将用于短语匹配。我想在文本中包含占位符,以表示该位置所需的数据类型。
WHERE ColumnName IN ('today is Monday', 'today is Tuesday', 'today is Wednesday')
WHERE ColumnName LIKE '% is today'