SQL Server匹配逗号分隔的varchar列中的部分文本
我在表中有一个SQL Server匹配逗号分隔的varchar列中的部分文本,sql,sql-server,database,sql-server-2012,Sql,Sql Server,Database,Sql Server 2012,我在表中有一个VARCHAR列category\u text,其中包含存储的通知的标记。我有三个标签查询,投诉和建议和列可以有一个或多个值逗号分隔。我正在应用一个过滤器,过滤器可以有一个或多个值以及逗号分隔的模式 现在我想要的是根据用户正在应用的过滤器检索至少包含一个标记的所有行,例如,用户可以选择“query,suggestion”作为过滤器,结果将是包含其中一个标记的所有行,即query或suggestion select t.category_text from r
VARCHAR
列category\u text
,其中包含存储的通知的标记。我有三个标签查询,投诉和建议和列可以有一个或多个值逗号分隔。我正在应用一个过滤器,过滤器可以有一个或多个值以及逗号分隔的模式
现在我想要的是根据用户正在应用的过滤器检索至少包含一个标记的所有行,例如,用户可以选择“query,suggestion”作为过滤器,结果将是包含其中一个标记的所有行,即query或suggestion
select
t.category_text
from
real_time_notifications t
where
charindex('query, suggestion, complaints', t.category_text) > 0
order by
t.id desc
创建一个新表,如user_category(user.id链接到user table,category),并在两者上创建索引。它将大大加快搜索速度,并大大简化您未来的维护
如果您仍然坚持这样做,请创建一个内联函数,将字符串拆分为记录,然后合并到测试中。修复您的数据模型!不要在字符串中存储多个值。然后你可以更明智地处理你的查询。如果你修复了你的模型,那么这个问题就无关紧要了。事实上,您正在使用非规范化的数据,这就是为什么您在努力解决一个简单的问题。