我有以下数据
SQL> SELECT id, relatedIdInASet from tab;
+----+------------------+
| id | relatedIdInASet |
+----+------------------+
| 1 | [12,34,56] |
| 2 | [11,12,22,34] |
+----+------------------+
relatedIdInASet
最多text
输入 1024 个字符,每行可以包含不同数量的 ID。我们可以在find_in_set
上面使用函数,但我们不能索引它......我想规范化数据。我想使用 SQL 创建一个表来解耦集合,因此它将产生:
+----+------------+
| id | relatedId |
|---+-------------+
| 1 | 12 |
| 1 | 34 |
| 1 | 56 |
| 2 | 11 |
| 2 | 12 |
| 2 | 22 |
| 2 | 34 |
+----+------------+
MySQL 没有拆分字符串功能。
在您的情况下,我建议按照以下步骤操作。
1.更新选项卡表删除
[
and]
,这可以通过简单的更新来完成:2.创建一个表中最大行的最大长度的数字表,在您的示例中为 4。
3.拆分字符串:
您可以直接创建 tab2 表:
所有提到的步骤都可以在这个例子中找到