【发布时间】:2017-04-14 22:26:14
【问题描述】:
我有一张这样的桌子
d_id | d_name | d_desc | sid
1 |flu | .... |4,13,19
其中 sid 是 VARCHAR。我想要做的是当输入 4 或 13 或 19 时,它会显示流感。但是,我的查询仅在用户选择所有这些值时才有效。这是我的查询
SELECT * FROM diseases where sid LIKE '%sid1++%'
从上面的查询中,我使用 PHP 并使用 for 循环将 sid 值放入 LIKE 值中。所以我只是放了 sid++ 来保持简单。我的查询仅在所有值都存在时才有效。如果假设用户选择 4 和 19 将是 '%4,19%' 那么它什么也不显示。谢谢大家。
【问题讨论】:
-
规范化你的架构
-
您可以使用正则表达式来执行此操作,但这通常是个坏主意。数据库字段不应包含多个值。见first normal form。
-
从长远来看,最好为每个
(d_id, sid)组合创建一个包含一行的新表。它还将使通过一个或所有sids 进行查询变得容易。 -
@Strawberry:你知道 OP 现在知道该怎么做了吗? :)
-
@juergen OP 现在知道在 google 中输入什么
标签: php mysql sql-server