gpt4 book ai didi

sql - 我需要为每个单词的 SQL AND 条件使用逗号分隔的字符串

转载 作者:行者123 更新时间:2023-12-02 00:05:51 27 4
gpt4 key购买 nike

所以我有一个参数。比方说:

@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'

但它知道在哪里停下来?知道是否只有一个字?还是两个?还是三个?

工作流程:

有人点击了一个标签,数据集就被那个标签过滤了。他们点击另一个,标签被附加到搜索框,然后数据集被这两个标签过滤,等等。

谢谢!

更新:

这是基于产品的情况。

  1. 创建产品时,创建者可以输入以逗号分隔的搜索标签。
  2. 插入产品时,搜索标签会插入到名为 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)

@TagsToSearch 表理想情况下是直接从您的应用程序传递的表值参数,但也可以通过对逗号分隔参数使用拆分函数来填充。

关于sql - 我需要为每个单词的 SQL AND 条件使用逗号分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18433900/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com