MYSQL 用SQL语句将类似 350202,350502, 这样的字段转换为数组
时间: 2024-02-05 13:14:23 浏览: 94
在 MySQL 中,可以使用 `SUBSTRING_INDEX()` 函数和 `GROUP_CONCAT()` 函数来实现将类似于 `350202,350502,` 这样的字段转换为数组。
具体的 SQL 语句如下:
```sql
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX('350202,350502,', ',', numbers.n), ',', -1) AS value
FROM
(SELECT @row := @row + 1 AS n FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) t2, (SELECT @row:=0) t3) numbers
WHERE
n <= (LENGTH('350202,350502,') - LENGTH(REPLACE('350202,350502,', ',', ''))) + 1;
```
这个 SQL 语句会将字符串 `'350202,350502,'` 转换为一个数组,返回结果如下:
```
+--------+
| value |
+--------+
| 350202 |
| 350502 |
+--------+
```
其中,`SUBSTRING_INDEX()` 函数用于取得字符串中第 n 个逗号前或后的子串,`GROUP_CONCAT()` 函数用于将结果合并成一个字符串。
需要注意的是,这个 SQL 语句中使用了一个子查询来生成数字序列,从而对每个子串进行处理。如果你需要处理的字符串长度很长,可能需要增加这个子查询的深度。同时,如果你的字符串中包含单引号或双引号等特殊字符,需要对 SQL 语句进行转义。
阅读全文