SQL查询:数组在数组中的位置

SQL查询:数组在数组中的位置,sql,arrays,filtering,Sql,Arrays,Filtering,我在数据库中得到了示例数据: id (int) name (varchar) parts (varchar) 1 some_element wheel, bearing, hinge, servo 2 another_element bearing, servo, lift 3 third_element motor, wire 我想按部分筛选结果。例如

我在数据库中得到了示例数据:

id (int)   name (varchar)           parts (varchar)
1          some_element             wheel, bearing, hinge, servo
2          another_element          bearing, servo, lift
3          third_element            motor, wire
我想按部分筛选结果。例如: 我正在键入车轮,伺服-无结果

我正在键入车轮、轴承、伺服、铰链-返回一些元素记录

我正在键入轴承、伺服、提升、车轮、轴承、铰链-它返回一些\u元素和另一个\u元素


如何构造SQL查询?是否有其他数据类型比“零件”字段更好?

进行一些规范化,以便您可以更轻松地编写查询,并且不会出现此类异常

您需要另一种结构,如:

元素

+----+---------------+
| id | name          |
+----+---------------+
|  1 | some_element  |
+----+---------------+
|  2 | another_elem  |
+----+---------------+
|  3 | third_elem    |
+----+---------------+
+----+----------+
| id | name     |
+----+----------+
|  1 | wheel    |
+----+----------+
|  2 | bearing  |
+----+----------+
|  3 | hinge    |
+----+----------+
|  4 | servo    |
+----+----------+
 etc..
部分

+----+---------------+
| id | name          |
+----+---------------+
|  1 | some_element  |
+----+---------------+
|  2 | another_elem  |
+----+---------------+
|  3 | third_elem    |
+----+---------------+
+----+----------+
| id | name     |
+----+----------+
|  1 | wheel    |
+----+----------+
|  2 | bearing  |
+----+----------+
|  3 | hinge    |
+----+----------+
|  4 | servo    |
+----+----------+
 etc..
另一个,例如
元素\u部分
,通过m:n关系连接其他两个部分

+----+---------+---------+
| id | elem_id | part_id |
+----+----------+--------+
|  1 | 1       | 1       |
+----+---------+---------+
|  2 | 1       | 2       |
+----+---------+---------+
|  3 | 1       | 3       |
+----+---------+---------+
|  4 | 2       | 3       |
+----+---------+---------+
|  5 | 2       | 4       |
+----+---------+---------+
 etc..
现在,您可以编写一个查询,例如,包含(或需要)
wheel
servo
(调整问题的公认答案)的过滤器元素:


你需要规范化你的数据。你用的是什么关系数据库?很简单!谢谢:)嗯,“更简单的查询编写”部分有点谎言,当然你可以做一些正则表达式模式匹配魔术(比如
比如
),但这只是掩盖了问题。