列转行去掉逗号 ,sql语句
时间: 2023-09-08 22:01:42 浏览: 106
SQL 列转行
在SQL语句中,可以使用字符串函数和条件语句来实现列转行,并去掉逗号。具体的实现方法如下:
假设我们有以下的表结构:
表名:students
列名:id, name, subjects
在subjects列中,每个学生可能有多个科目,用逗号分隔开。我们现在希望将每个科目转为一行,并去掉逗号。
可以使用以下的SQL语句实现:
```
SELECT id, name, SUBSTRING_INDEX(SUBSTRING_INDEX(subjects, ',', n), ',', -1) AS subject
FROM students
CROSS JOIN (
SELECT 1 AS n UNION ALL
SELECT 2 UNION ALL
SELECT 3
-- 可根据实际情况添加更多的UNION ALL语句,以处理更多的科目
) numbers
WHERE subject != ''
ORDER BY id, name;
```
以上的SQL语句中,`SUBSTRING_INDEX(SUBSTRING_INDEX(subjects, ',', n), ',', -1)`的作用是根据逗号将subjects列拆分为多个子字符串,n是拆分的子字符串的索引。通过在`numbers`子查询中添加需要处理的科目的个数,可以将subjects列转为多行。
最后使用`WHERE subject != ''`过滤掉空的科目行,并使用`ORDER BY`对结果按照id和name进行排序。
执行以上的SQL语句,将会得到每个学生的每个科目单独一行的结果,并且逗号已被去掉。
阅读全文