所以我有一个参数。可以说:
@Tags = 'Red,Large,New'
我的表格中有一个名为[标签]的字段
假设该字段包含“ Red,Large,New,SomethingElse和SomethingElse”的特定行
我如何才能做到这一点,以基本实现以下逻辑,我将键入以下逻辑以进行理解,但我知道这是错误的:
SELECT * FROM MyTable WHERE Tags LIKE 'FirstWordInString' AND Tags Like 'SecondWordInString' AND Tags Like 'ThirdWordInString'
但是它知道在哪里停下来?知道只有一个字吗?还是两个?还是三个?
工作流程:
有人单击一个标签,然后该标签将过滤数据集。他们单击另一个,然后将标签附加到搜索框,然后通过这两个标签过滤数据集,依此类推。
谢谢!
更新:
这是基于产品的情况。
因此,在“产品”表中,我有一个字段,该字段将它们用字符串分隔以在应用程序端进行显示,并且在基于ProductID的按行分隔的ProductTag表中也可以找到这些相同的标签。
我不了解的是,如果搜索中存在针对该产品的所有标签,则如何在提供结果的选择中放置条件。
我认为仅使用逗号分隔的字段会更容易,但也许我应该使用相应的表(ProductTags)
使用该ProductTags表的一种关系划分方法是
ProductTags
DECLARE @TagsToSearch TABLE ( TagId VARCHAR(50) PRIMARY KEY ) INSERT INTO @TagsToSearch VALUES ('Red'), ('Large'), ('New') SELECT PT.ProductID FROM ProductTags PT JOIN @TagsToSearch TS ON TS.TagId = PT.TagId GROUP BY PT.ProductID HAVING COUNT(*) = (SELECT COUNT(*) FROM @TagsToSearch)
@TagsToSearch理想情况下,该表是直接从应用程序传递的表值参数,但也可以通过对逗号分隔参数使用split函数来填充该表值参数。
@TagsToSearch