【峰回路转】Excel技巧百例 07.汉字列的合并

本文介绍两种常用的将表格内容合并到同一列的方法:使用连接符“&”和使用CONCATENATE函数。这两种方法可以帮助用户快速整理表格数据。

如果您看到如下图这样的表格,需要把内容合并到一列,您会如何处理呢?


这里介绍一下汉字列的合并

常用的方式有2种:

1.用&连接符

E1=A1&B1&C1&D1


2.用CONCATENATE函数




在 MySQL 中实现多个字符拆分并并行转操作,可借助序号表和字符串处理函数。 ### 原理 利用 `SUBSTRING_INDEX` 函数按指定分隔符拆分字符串,结合序号表生成连续序号,通过交叉连接(`CROSS JOIN`)将序号与拆分后的字符串元素关联,实现行转。 ### 示例代码 #### 场景一:拆分 `user` 表中 `mobile` 字段 假设 `user` 表存储用户信息,`mobile` 字段以逗号分隔存储多个手机号码。使用以下 SQL 语句拆分并转: ```sql SELECT NAME, REPLACE( SUBSTRING_INDEX(mobile, ',', a.id), CONCAT( SUBSTRING_INDEX(mobile, ',', a.id - 1), ',' ), '' ) AS mobile FROM squence a CROSS JOIN ( SELECT NAME, CONCAT(mobile, ',') AS mobile, LENGTH(mobile) - LENGTH(REPLACE(mobile, ',', '')) + 1 AS size FROM `user` ) b ON a.id <= b.size; ``` 此 SQL 借助 `squence` 表生成连续 `id`,通过交叉连接将 `id` 与 `user` 表中 `mobile` 字段拆分后的元素关联,最终实现 `mobile` 字段拆分并转 [^2]。 #### 场景二:拆分 `rfsr` 表中 `FAIL_REASON` 字段 假设 `rfsr` 表存储金融服务结果信息,`FAIL_REASON` 字段以逗号或竖线分隔存储多个失败原因。使用以下 SQL 语句拆分并转: ```sql SELECT ids, id, APPLY_ID, REPLACE( SUBSTRING_INDEX(REASON, ',', a.ids), CONCAT( SUBSTRING_INDEX(REASON, ',', a.ids - 1), ',' ), '' ) AS REASON FROM t_squence a CROSS JOIN ( SELECT id, APPLY_ID, CONCAT(REASON, ',') AS REASON, LENGTH(REASON) - LENGTH(REPLACE(REASON, ',', '')) + 1 AS size FROM ( SELECT id, APPLY_ID, left(substring(REPLACE(REASON,',,',','),2),length(substring(REPLACE(REASON,',,',','),2))-1) REASON FROM ( SELECT id, APPLY_ID, CERT_NO, REPLACE(GROUP_CONCAT(FAIL_REASON),'|',',') AS REASON FROM rcs_finance_ser_result rfsr WHERE rfsr.final_result='AD' AND rfsr.cert_no='411201199110164491' GROUP BY rfsr.CERT_NO ) t ) tt ) b ON a.ids <= b.size; ``` 此 SQL 先对 `FAIL_REASON` 字段进行预处理,将竖线替换为逗号,去除多余逗号,再借助 `t_squence` 表生成连续 `ids`,通过交叉连接将 `ids` 与 `FAIL_REASON` 字段拆分后的元素关联,最终实现 `FAIL_REASON` 字段拆分并转 [^3]。 ### 代码解释 - `SUBSTRING_INDEX(str,delim,count)`:按指定分隔符 `delim` 拆分字符串 `str`,`count` 为正返回定界符左边内容,为负返回右边内容 [^1]。 - `REPLACE(str,from_str,to_str)`:将字符串 `str` 中 `from_str` 替换为 `to_str`。 - `LENGTH(str)`:返回字符串 `str` 的长度。 - `GROUP_CONCAT(expr)`:将分组后的数据连接成一个字符串。 - `CROSS JOIN`:实现两个表的交叉连接,生成笛卡尔积。 ### 注意事项 - 需创建序号表(如 `squence` 或 `t_squence`),其 `id` 或 `ids` 范围应根据实际拆分后元素数量确定。 - 若字符串包含多种分隔符,需先统一分隔符,再进行拆分操作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值