MYSQL 用SQL语句将类似 31506101,31506102,31505201, 这样的字段转换为数组
时间: 2023-08-16 19:05:09 浏览: 109
MySQL DBA最需要掌握的SQL语句详细教程
在 MySQL 中,可以使用 `FIND_IN_SET()` 函数将以逗号分隔的字符串转换为数组。具体来说,可以使用以下 SQL 语句将类似 `31506101,31506102,31505201` 这样的字符串转换为数组:
```
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX('31506101,31506102,31505201', ',', numbers.n), ',', -1) AS value
FROM
(SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) numbers
WHERE
n <= LENGTH('31506101,31506102,31505201') - LENGTH(REPLACE('31506101,31506102,31505201', ',', '')) + 1;
```
以上 SQL 语句的输出结果为:
| value |
|------------|
| 31506101 |
| 31506102 |
| 31505201 |
其中,`numbers` 子查询生成了一个包含数字 1 到 4 的临时表,这里可以根据实际情况修改数字范围。然后,使用 `SUBSTRING_INDEX()` 函数将字符串按照逗号分隔并提取出对应位置的值。最后,使用 `WHERE` 子句过滤出字符串中所有的逗号,并计算出数组的长度,从而得到数组中的所有元素。
阅读全文