达梦数据库 遍历字符串,以逗号分隔转列
时间: 2024-10-19 08:07:41 浏览: 109
达梦数据库(DM)是一款国产的关系型数据库管理系统,它的SQL语言支持通过`STRING_SPLIT`函数或者类似功能来遍历并处理以特定字符(如逗号)分隔的字符串,将其转换成多行或多个单独的列。例如,假设有一个名为`str_column`的字段存储了以逗号分隔的值,你可以使用以下查询:
```sql
SELECT value
FROM (
SELECT LTRIM(RTRIM(SUBSTR(str_column, number, locate(',', str_column) - number + 1))) AS value
FROM table_name,
TABLE(Numbers) n
WHERE number <= LENGTH(str_column)
) subquery
WHERE value IS NOT NULL;
```
在这个例子中,`table_name`是包含`str_column`字段的表名,`Numbers`是一个系统表,提供了一系列的数字用于拆分操作。`SUBSTR`, `LENGTH`, 和 `LOCATE`函数配合使用,可以逐个提取出每个逗号分隔的部分。
如果你需要将结果保存到新的列中,可以创建一个新的表或者更新现有表,如下所示:
```sql
CREATE TABLE new_table AS
SELECT id, LTRIM(RTRIM(value)) AS new_column
FROM original_table,
STRING_SPLIT(str_column, ',') s;
```
这里,`original_table`是原表名,`new_table`是新创建的表,`new_column`会包含拆分后的每一项。
阅读全文