【发布时间】:2012-02-04 13:45:29
【问题描述】:
我是数据库编程的新手,在我的数据库中进行搜索时遇到了麻烦。我有一个表,其中有一列名为Required_Items,它只是一个由';'分隔的必需项目列表。查询时我无法让服务器返回行:
'SELECT * FROM The_Table WHERE Required_Items LIKE '%item1%' '
数据库似乎在列中找不到该项目。问题是我希望能够返回包含所有项目的行。我会尝试类似:
'SELECT *
FROM The_Table
WHERE Requiered_Items LIKE '%item1%' AND
Requiered_Items LIKE '%item2%' AND
Requiered_Items LIKE '%item3%' AND//etc...
知道要测试的这些“项目”的数量是可变的,我该怎么做?
【问题讨论】:
-
s/AND/OR/ 例如,颜色不能同时“红色”和“蓝色”。 (除非你想捕捉像“bluered”和“redblue”这样的情况)
-
@wildplasser - 他们将逗号分隔的列表存储在列中。
-
是的,例如我想确保对象包含一些特征,如“红色”、“方形”和“点”等......
-
啊哈。您是否考虑过标准化为 1NF?顺便说一句:s/Required_Items/Required_Items/错字?
-
在列中存储逗号分隔的列表通常是个坏主意。在您的情况下,您可能应该再有两张桌子。一个存储特征,一个存储
The_Table中一行所需的特征。