找回密码
 立即注册

QQ登录

只需一步,快速开始

hsym

初级会员

15

主题

45

帖子

354

积分

初级会员

积分
354
hsym
初级会员   /  发表于:2024-2-26 16:44  /   查看:469  /  回复:1
1金币
本帖最后由 hsym 于 2024-2-26 16:50 编辑

比如做一个派工计划,派一个班三个工人,值班人字段是张三,李四,王五这样的格式,查询派工单的时候按人员需要汇总,怎样显示成一行记录一个值?


就像这样的记录,显示成上海一行,北京一行
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

您好,可以参考: 在SQL中,处理逗号分隔的数据并将其转换为多行通常需要使用特定数据库系统提供的函数。以下是一些常见数据库系统的处理方法: 1. MySQL: 在MySQL 8.0及更高版本中,可以使用`STRING_TO_ARRAY()`和`UNNEST()`函数来实现: ```sql SELECT UNNEST(STRING_TO_ARRAY(column_name, ',')) AS single_value FROM your_table; ``` 对于早期版本的MySQL,可能没有内置的拆分函数,需要创 ...

1 个回复

倒序浏览
最佳答案
最佳答案
Erik.Xue讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2024-2-26 16:44:05
来自 2#
您好,可以参考:

在SQL中,处理逗号分隔的数据并将其转换为多行通常需要使用特定数据库系统提供的函数。以下是一些常见数据库系统的处理方法:

1. MySQL:
   在MySQL 8.0及更高版本中,可以使用`STRING_TO_ARRAY()`和`UNNEST()`函数来实现:
   ```sql
   SELECT UNNEST(STRING_TO_ARRAY(column_name, ',')) AS single_value
   FROM your_table;
   ```

   对于早期版本的MySQL,可能没有内置的拆分函数,需要创建自定义函数或者通过其他复杂查询方式实现。

2. PostgreSQL:
   使用`unnest()`和`string_to_array()`函数:
   ```sql
   SELECT unnest(string_to_array(column_name, ',')) AS single_value
   FROM your_table;
   ```

3. SQL Server:
   SQL Server中没有内置的直接拆分字符串的函数,但可以使用`STRING_SPLIT()`(适用于SQL Server 2016及更高版本):
   ```sql
   SELECT value
   FROM STRING_SPLIT(column_name, ',')
   WHERE RTRIM(value) <> ''
   ```

   对于较早版本的SQL Server,则可能需要编写自定义函数或使用如`XML PATH()`等技巧。

4. Oracle:
   Oracle可以使用`REGEXP_SUBSTR()`配合分析函数:
   ```sql
   SELECT REGEXP_SUBSTR(column_name, '[^,]+', 1, level) as single_value
   FROM your_table
   CONNECT BY LEVEL <= REGEXP_COUNT(column_name, ',') + 1;
   ```

请根据您使用的具体数据库系统选择合适的方法,并替换 `your_table` 和 `column_name` 为您实际的表名和列名。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部