sql查询中将表中的记录按照某个字段中的分割符分成多行

在SQL SERVER中根据某字段分隔符将记录分成多条记录 在SQL SERVER中根据某字段分隔符将记录分成多条记录 XT_RSGL_KQSZ_LS表结构如下图: CREATE TABLE XT_RSGL_KQSZ_LS(   KQFW VARCHAR(400) ) 其中KQFW字段以分割符 , 隔开 INSE... 阅读详情

场景,一个积分收入记录表里面有个字段记录多个参与活动的i规则id,主要字段如下:

业务要求根据income_rule_id去关联规则表获取规则信息并更新到积分变更表中,牵扯到的具体表和逻辑不再一一展示,在这个过程中需要把表中的每一条记录根据ncome_rule_id的分隔符分割成多条记录表结构不变以方便做连接查询。废话不多说直接上sql,和结果:

sqlserver:

SELECT
	a.activity_income_rule_id,
	a.activity_id,
	a.active_flag,
	b.value
	income_rule_id 
FROM
	(
SELECT
	c.activity_income_rule_id,
	c.activity_income_rule_name,
	c.activity_id,
	c.active_flag,
	c.company_code,
	income_rule_id = CONVERT ( XML, '<root><v>' + REPLACE ( income_rule_id, ',', '</v><v>' ) + '</v></root>' ) 
FROM
	CRM_CreditActivityIncomeRule c WITH ( NOLOCK ) 
	) a OUTER APPLY (
SELECT 
value
	= N.v.
value
	( '.', 'varchar(100)' ) 
FROM
	a.income_rule_id.nodes ( '/root/v' ) N ( v ) 
	) b 

结果如下:

mysql:

SELECT
	a.activity_income_rule_id,
	a.activity_id,
	a.active_flag,
	SUBSTRING_INDEX( SUBSTRING_INDEX( a.`income_rule_id`, ',', b.help_topic_id + 1 ), ',', - 1 ) AS income_rule_id 
FROM
	CRM_CreditActivityIncomeRule a
	INNER JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( a.`income_rule_id` ) - LENGTH( REPLACE ( a.`income_rule_id`, ',', '' ) ) + 1 )

结果:

 经过上述处理可以方便后续进行连接查询!

建议:直接粘贴代码套公式即可!

公式总结如下:

SQL server:
SELECT
    a.其他字段,
    a.其他字段,
    ...,
    b.value 别名
FROM
    (
SELECT
    c.其他字段,
    c.其他字段,
    ...,
    需要被分割的字段 = CONVERT ( XML, '<root><v>' + REPLACE ( 需要被分割的字段, ',', '</v><v>' ) + '</v></root>' ) 
FROM
    表名 c WITH ( NOLOCK ) 
    ) a OUTER APPLY (
SELECT 
value
    = N.v.
value
    ( '.', 'varchar(100)' ) 
FROM
    a.需要被分割的字段.nodes ( '/root/v' ) N ( v ) 
    ) b 
MySQL:

SELECT
    a.其他字段,
    a.其他字段,
    ...,
    SUBSTRING_INDEX( SUBSTRING_INDEX( a.`需要被分割的字段`, ',', b.help_topic_id + 1 ), ',', - 1 ) AS 别名 
FROM
    表名 a
    INNER JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( a.`需要被分割的字段` ) - LENGTH( REPLACE ( a.`需要被分割的字段`, ',', '' ) ) + 1 )

mysql pgsql 实现多行记录合并成一行 分组合并 用指定字符做分割 mysql pgsql 按照指定字段分组实现多行合并成一行数据库服务器环境原表结构和数据mysqlSQL结果去重去重之后的查询结果pgsqlSQL结果去重去重之后的结果相关文章导读 数据库服务器环境 数据库 版本 mysql 5.7 PostgreSQL 10.10 原表结构和数据 id name gender major 1 张三 男 篮球 2 张三 男 足球 3 李四 女 游泳 4 小周 女 跑步 5 王二 男 健身 6 小周 女 网球 7 阅读详情

相关推荐

SQL Server 基础:导出命令

STUFF 函数将字符串插入到另一个字符串中。它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置。它只有1和0两个值,在对它进行赋值操作的时候,你应该将它当做数字1和0,但是当你将它绑定到控件时,它显示的却是True和False。字符数据的表达式character_expression 可以是常量、变量,也可以是字段或二进制字段。SQL Server中,没有布尔类型True和False。其实还有一个不错的选择,是Bit类型。取反:使用取模”%”操作来实现。

专注于计算机研发知识和资讯分享 2958

SQL 一行转多行的处理方案

一. 背景和问题 背景:处理数据时,需要将一行中的某列数据根据分隔符转换到多行,为了实现该需求,找了一些解决方案,记录如下。 问题概述 二. MySQL中一行转多行 1. 技术点 mysql自带表:mysql.help_topic sql的字符串函数:substring_index() 1.1 mysql.help_topic 概述:mysql.help_topic是数据库mysql的一个表,该表提供查询帮助主题给关键字的详细内容。 说明:一行转多行的这条sql语句其实跟help_topic表没

zijikanwa 3万+

从BUCK-BOOST到反激:一个‘拆电感’的视角,轻松理解多路输出交叉调整

本文从BUCK-BOOST电路到反激变换器的演变入手,通过‘拆解电感’的独特视角解析多路输出交叉调整机制。深入探讨了反激电路的能量暂存方式、传递路径变化及电压关系,并结合具体参数对比揭示其特性。针对多路输出中的电压平衡问题,提供了绕组排布优化、元器件选型等实战技巧,帮助工程师有效提升电源系统的稳定性与效率。

weixin_33738578的博客 437

SQL 将一列拆分成多列

我们可能会遇到按分隔符拆成多行或者多列的情况,以及复制的业务需求,只需视情况调整sql语句,或者编写存储过程。对于列col的值,按分隔符拆分为多列数据时,不知道需要拆分成几列,可以先用以下sql查询出列数。FROM t1;

折翼的青鸟 1万+

STK之Commu模块之三仿真卫星通信链路参数计算

考虑上述衰减的影响,可以得到卫星接收机输入端的载波功 [C] = [PT] +[GT] +[GR] -[L] -[L1] -[L2] (

juanhuokang2681的博客 8268

【TI毫米波雷达】IWR6843AOPEVM-G与DCA1000EVM实战:从硬件连接到数据流解析

本文详细解析了TI毫米波雷达开发套件IWR6843AOPEVM-G与DCA1000EVM的硬件连接、模式配置及数据流处理全流程。针对官方手册中的常见配置错误,提供了避坑指南和实测验证的正确设置方法,包括开关配置、网络参数等关键步骤。通过mmWave Studio软件配置雷达参数,并深入解析数据采集与处理流程,帮助开发者高效实现毫米波雷达应用开发。

weixin_30653023的博客 368

如何把一行数据拆分成多条sql

id, start_time, end_time, pay_amount, months,这是一条数据,现在需要根据规则,把这条数据拆分成多条数据,也就是平均到每个月上面。如果写sql该如何实现呢?如果不引入其他编程语言,只是用sql实现要怎么做?例如这里根据12/3 再生成4条数据要如何实现?假如可以引入编程语言这个要怎么实现?今日遇到一个分摊场景,例如。数据开发中的数据质量校验。稍微复杂一点的情况是。

叶子常常随风而落,分享博主日常学习和使用的一些技术 1982

Matlab2021a破解版安装与激活实战教程(含详细步骤截图)

本文详细介绍了MATLAB R2021a的正版安装流程与核心功能优化,包括系统要求、安装步骤、性能调优及深度学习工具箱的应用。通过实战教程和代码示例,帮助用户高效搭建开发环境并掌握关键技术,特别适合工程计算与科学研究的专业人士。

vvv99的博客 464

【SQL实现合并/拆分数据】单行变多行&多行变单行

表格示例: 多行表名:table_1 sport name 篮球 LiLei 篮球 HanMeiMei 篮球 XiaoMing 足球 Jane 足球 ZhangSan 足球 LiLei 单行表名:table_2 sport names 篮球 LiLei,HanMeiMei,XiaoMing 足球 Jane,ZhangSan,LiLei 解释(个人理解):单多之变就是类..

LucklyTiger的博客 7775

2026年AI编程工作流实战:Claude Code与Open Code深度对比

AI编程已从代码生成工具升级为IDE级智能工作流核心能力。其本质是将大语言模型深度嵌入开发环境,通过语义理解、上下文感知与行动闭环重构传统编码范式。Claude Code以企业级知识图谱和双轨Code Review为代表,强调合规性、可审计与深度集成;Open Code则依托Skill可组合性、本地优先模型与ocp协议,实现开源驱动的灵活扩展。二者共同推动IDE从‘编辑器’进化为‘数字搭档’——能理解RFC文档、记住PR评论、自动补全带重试的fetch逻辑,并在Promise链发呆时一键重构为async/a

weixin_33739523的博客 467

不懂就学之挑战成为WorldQuant Brain顾问的第1天

WorldQuant Brain 是由 WorldQuant 公司开发的一个基于人工智能和机器学习的量化研究平台,旨在帮助量化研究员发现和构建有效的投资策略。WorldQuant 是一家全球领先的量化投资公司,专注于利用数据科学、技术和金融工程开发量化交易策略。

Yanbang1的博客 8389

MySQL 中将使用逗号分隔的字段转换为多行数据

在我们的实际开发中,经常需要存储一些字段,它们使用像`, -` 等连接符进行连接。在查询过程中,有时需要将这些字段使用连接符分割,然后查询多条数据。今天,我们将使用一个实际的生产场景来详细解释这个解决方案。

修己xj的博客 1965

Python实战:打造学生信息管理系统

通过本教程,我们构建了一个简单的学生信息管理系统,实现了基本的添加、删除、修改和查询功能。当然,这个系统还有很多可以改进和扩展的地方,比如添加用户界面、增加数据持久化功能、支持批量操作等。简介:本文将介绍如何使用Python编写一个功能齐全的学生信息管理系统,包括添加、删除、修改和查询学生信息的基本操作。学生信息管理系统是学校日常管理中不可或缺的一部分,它能够帮助管理人员快速、准确地管理学生信息,提高工作效率。为了实现上述功能,我们可以设计一个包含学生信息的字典,并使用函数来封装各个操作。

铭渊老黄 1492

一个存在逗号分割的字段的表,1行转多行

浅析mysql一行转多行 - 简书 可以执行该SQL:GRANT SELECT ON mysql.help_topic TO 'autochain_uat'@'localhost'(给用户赋权限); 取消用户权限SQL:REVOKE SELECT ON mysql.help_topic FROM 'autochain_uat'@'localhost';

weixin_36013896的博客 751

Python爬虫实战:全自动采集银行理财产品收益率数据

本文通过Playwright动态爬虫技术,成功实现了对银行理财产品收益率数据的实时采集,并通过 Pandas 数据清洗、SQLite 存储、调度自动化等模块,构建了一个可扩展的银行理财数据抓取系统。理财非儿戏,数据做决策。掌握银行收益信息是我们迈向理性投资的第一步。希望这套工具对你有所帮助!

2201_76125261的博客 1156

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

mysql屏幕字段一行显示_[SQL]把同一字段里的多行数据用一行显示

declare @t table(id int,num int)insert @tselect , union allselect , union allselect ,--select * from @t----查询declare @idList varchar(),@numList varchar()set @idList = ''set @numList = ''select@idList ...

weixin_39569051的博客 1629

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Oracle 将字段拆分成多行(亲测好使)

oracle将字段按指定分隔符拆成多行

weixin_44305716的博客 7387

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

mysql 字段拆分多行_MySQL分割一行为多行的思路

最近数据分析有需求,分析运营活动短信用户,但是发送短信的用户是通过 JSON 字符串数组存储在一个 text 字段的。内容类似于:["user1", "user2", "user3"....]数据分析想分析这些用户,那么就需要 in 这些用户查询。自己手动拼 SQL 太蛋疼,而且好几万几十万的用户,拼成SQL,复制粘贴也够蛋疼的。那么可以考虑将这一行分割为多行,作为一个字段。mysql.help_...

weixin_29826879的博客 1495

sql字段存储多字段需分割连表查询

1.原料表 记录批号 物料代码 等物料信息 if object_id('[tb_i259b]') is not null drop table tb_i259b go create table tb_i259b(tb_i259b_id int ,tb_i259b_r596j varchar(8000),tb_i259b_i231a varchar(8000),tb_i259b_c24u varchar(8000),tb_i259b_num varchar(8000) ) insert tb_i259b s

qq_36607213的博客 1097

mysql怎么让表中某一列字段按某字符分割一行变成多行

mysql怎么让表中某一列字段按某字符分割一行变成多行

振云博客 1778

SQL字符串分割多行

原型数据: 需求: 按逗号或分号将字段IT_Description值分割为多行,填充下拉列表SQL实现脚本 SELECT b.vv FROM( SELECT CONVERT(XML,'&lt;n&gt;'+REPLACE(REPLACE(IT_Description,';',','),',','&lt;/n&gt;&lt;n&gt;')+'&lt;/n&gt;') AS xmlval ...

wozengcong的专栏 9111

MySQL数据库中,将一个字段的值分割成多条数据显示

本文主要记录如何在MySQL数据库中,将一个字符串分割成多条数据显示。 外键有时是以字符串的形式存储,例如 12,13,14 这种,如果以这种形式存储,则不能直接与其他表关联查询,此时就需要将该字段的值分割再关联查询。 下图是一条测试数据,表名为 test 想达到的效果如下图所示 为实现功能,需要新建一个表,该表只有一个字段,字段命名为id,表名称为sequence ...

weixin_30307267的博客 8587

MySql 一行变多行(根据特定符号分割)

MySql 一行变多行(根据特定符号分割)

qq_34832347的博客 1万+

sql拼接同一字段_SQL 拼接多个字段的值&一个字段多条记录的拼接 [轉]

例如student表:studentIDstudentNamestudentScore01Alice9002Bill9503Cindy100一、拼接多个字段的值select studentID+‘-’+studentName+'-'+studentScore AS studentInfo from student结果:二、一个字段多条记录的拼接select stuff((select '|'+st...

weixin_39621794的博客 1576

mysql将一个字段的值根据逗号拆分_MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据...

场景:表名:testsuerid name1 小红,小李,李红,小法要结果值为:1 小红1 小李1 李红1 小法MYSQL函数解释:substring_index(str,delim,count)说明:substring_index(被截取字段,关键字,关键字出现的次数)JOIN:这个join最基本原理是笛卡尔积。通过这个方式来实现循环INNER...

weixin_39802969的博客 3307

mysql数据库中某个字段的数据为分号分割的数据,将该数据拆分成多行

mysql把字段进行逗号分隔成多条数据,由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式。即同一个列中存储了多个属...

hehyyoulan的博客 4145
上一篇: idea配置jdk版本遇到的坑!--java: 源发行版 18 与 --enable-preview 一起使用时无效
下一篇: CentOS 7停止在线更新 yum源失效解决办法
learnjava1989
博客等级 码龄9年 9粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值