所以我有一个参数。可以说:
@Tags = 'Red,Large,New'
我的表中有一个名为 [Tags] 的字段
假设该字段包含“Red,Large,New,SomethingElse,AndSomethingElse”的特定行
我怎样才能将其分解以基本上实现以下逻辑,我将输入该逻辑以供理解,但我知道这是错误的:
SELECT * FROM MyTable WHERE
Tags LIKE 'FirstWordInString'
AND Tags Like 'SecondWordInString'
AND Tags Like 'ThirdWordInString'
但它知道在哪里停下来吗?知道只有一个字吗?还是两个?还是三个?
工作流程:
有人单击标签,数据集就会按该标签过滤。他们单击另一个标签,该标签将附加到搜索框,然后通过这两个标签过滤数据集,等等。
谢谢你!
Update:
这是基于产品的情况。
- 创建产品时,创建者可以输入以逗号分隔的搜索标签。
- 插入产品时,搜索标签将插入到名为 ProductTags (ProductID, TagID) 的单独表中
因此,在 Product 表中,我有一个字段将它们用字符串分隔,以便在应用程序端显示,并且在 ProductTag 表中也可以找到这些相同的标签,根据 ProductID 按行分隔。
我不明白的是,如果搜索中的所有标签都存在该产品,如何将条件放置在提供结果的选择中。
我认为使用逗号分隔字段会更容易,但也许我应该使用相应的表(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)
The @TagsToSearch
理想情况下,表是直接从应用程序传递的表值参数,但也可以通过对逗号分隔参数使用 split 函数来填充。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)