【发布时间】:2021-08-07 07:21:28
【问题描述】:
我正在尝试从具有特定内容tags 值的数据库中获取所有数据。如果我运行下面的代码,它只返回带有id 1 的行,即使单词tag 是两行中tags 值的一部分。我还添加了%or% 运算符,但它正在获取确切的行。当我搜索 tag 时,它显示 2 行,但使用下面 $mytags 中的值,它只匹配 1 行。
如果$mytags 中的任何内容匹配,我希望表达式获得一行。
SQL
$mytags = "tag, tag1";
SELECT * FROM table WHERE tags LIKE '%$mytags%' ORDER BY id DESC
| id | body | tags |
|---|---|---|
| 1 | Loreum Content 1 | tag, tag1 |
| 2 | Loreum Content 2 | tag |
【问题讨论】:
-
您应该发布您的实际代码,而不是伪代码。
-
您是想要基于
tag匹配的两行还是基于tag, tag1匹配的一行? -
如果
tags列和$mytags变量都可能包含CSV 标签列表,则LIKE 运算符不适用。将其中一个解析为单独的值并分别测试每个值或使用另一种技术(例如,在 MySQL 中,使用字符串函数将这些值转换为 JSON,然后使用 JSON_OVERLAPS() 函数)。 -
修复你的数据模型!如果您在字符串列中存储多个值,则会损坏。
-
您尝试过什么来解决您的问题?你被困在哪里了?