如何检查字符串列表中的至少一个字符串是否包含在另一个字符串中?

时间:2021-02-26 10:26:55

标签: mysql tags mariadb substring

我提供了一个标签列表和一个带有名为 tags 的字段的表格。标签作为一个字符串组合存储。在串联之前,在每个标签的开头添加一个hashtag。

示例:

标签列表:{'summer', 'winter', 'autumn', 'spring'}

表中存储的字符串:'#summer#winter#autumn#spring'

现在给定一个标签列表,我如何查询在其 tags 字符串中至少包含这些给定标签之一的条目?有没有什么具体的功能或单行指令来实现这一点?

我目前正在获取该表中包含的所有数据集,在我的应用程序中为每个数据集创建对象,然后根据给定的标签列表查询这些对象。这是非常不方便和低效的,因为该表中有大约 500.000 个数据集。并且总是查询所有这些数据集会花费太多时间。 用于接收包含至少一个给定标签的所有数据集的 SQL 查询可能如下所示:

SELECT *
FROM table
WHERE tag_string LIKE '%tag1%' OR tag_string LIKE '%tag2%' OR tag_string LIKE '%tag3%' OR LIKE....

但这也是低效的,尤其是对于大量给定的标签。

我可以遍历每个标签并检查带有 LOCATE 的子字符串吗?或者有什么更有效的方法?

我正在使用 MariaDB 服务器版本 10.3.21。

0 个答案:

没有答案