ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3177|回复: 3

[求助] 如何用SQL实现带分隔符的不规则编码分列

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-1-29 13:17 | 显示全部楼层 |阅读模式
KMNOKM1 KM2 KM3 KM4 KM5 KM6
411-02-43-B2-3-1 411 02 43 B2 3 1
编码如:411-02-43-B2-3-1,有分隔符"-"连接,如何用SQL语句(不用VBA)实现分列.效果如表格所示.

****************************************
补充问题:
能否按照每个KM(1-6)列的最大长度规范化,322222,不足位为填"0".再添加一列汇总各个KM列.如4110243B20301

[ 本帖最后由 xmirage 于 2011-1-30 10:10 编辑 ]

不规则编码.rar

15.68 KB, 下载次数: 46

TA的精华主题

TA的得分主题

发表于 2011-1-29 15:54 | 显示全部楼层
SELECT ID.[KMNO], IIf(InStr(1,Replace([KMNO] & "-","-","@",1,0),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,0),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,0),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,0),"@")-1)) AS 表达式1, IIf(InStr(1,Replace([KMNO] & "-","-","@",1,1),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,1),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,1),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,1),"@")-1)) AS 表达式2, IIf(InStr(1,Replace([KMNO] & "-","-","@",1,2),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,2),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,2),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,2),"@")-1)) AS 表达式3, IIf(InStr(1,Replace([KMNO] & "-","-","@",1,3),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,3),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,3),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,3),"@")-1)) AS 表达式4, IIf(InStr(1,Replace([KMNO] & "-","-","@",1,4),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,4),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,4),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,4),"@")-1)) AS 表达式5, IIf(InStr(1,Replace([KMNO] & "-","-","@",1,5),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,5),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,5),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,5),"@")-1)) AS 表达式6
FROM ID;

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-30 08:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
非常感谢,困扰多日的问题终于解决了.

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-30 10:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
补充问题:
能否按照每个KM(1-6)列的最大长度规范化,322222,不足位为填"0".再添加一列汇总各个KM列.如4110243B20301
下面的语句是要事先知道每列的最大长度,有没有办法在语句中加入判断每列的最大长度的语句.
SELECT ID.[KMNO],
IIf(InStr(1,Replace([KMNO] & "-","-","@",1,0),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,0),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,0),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,0),"@")-1)) AS KM1,
IIf(InStr(1,Replace([KMNO] & "-","-","@",1,1),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,1),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,1),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,1),"@")-1)) AS KM2,
IIf(InStr(1,Replace([KMNO] & "-","-","@",1,2),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,2),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,2),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,2),"@")-1)) AS KM3,
IIf(InStr(1,Replace([KMNO] & "-","-","@",1,3),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,3),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,3),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,3),"@")-1)) AS KM4,
IIf(InStr(1,Replace([KMNO] & "-","-","@",1,4),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,4),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,4),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,4),"@")-1)) AS KM5,
IIf(InStr(1,Replace([KMNO] & "-","-","@",1,5),"-")=0,"",Mid([KMNO],InStrRev(Replace([KMNO] & "-","-","@",1,5),"@")+1,InStr(1,Replace([KMNO] & "-","-","@",1,5),"-")-InStrRev(Replace([KMNO] & "-","-","@",1,5),"@")-1)) AS KM6,
Replace(Format([KM1],"@@@")," ","0") & Replace(Format([KM2],"@@")," ","0") & Replace(Format([KM3],"@@")," ","0") & Replace(Format([KM4],"@@")," ","0") & Replace(Format([KM5],"@@")," ","0") & Replace(Format([KM6],"@@")," ","0")
FROM ID;

[ 本帖最后由 xmirage 于 2011-1-30 10:43 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 22:56 , Processed in 0.029728 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表