ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 透视表SQL如何截取指定字段某一个字符的前面字符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-9 16:16 | 显示全部楼层 |阅读模式
各位大侠


请教:透视表SQL能否截取指定字段某一个字符的前面字符 ?具体如附件,请赐教。

查了网上SQL,substring(代号,1,CHARINDEX('-',代号)-1) from a  但ExcelSQL  好像用不了。


截取指定字段指定字符窜.zip (7.27 KB, 下载次数: 4)

TA的精华主题

TA的得分主题

发表于 2023-6-10 07:49 | 显示全部楼层


LEFT或MID皆可

SQL.jpg



  1. SELECT
  2. LEFT(代号,INSTR(代号,"-")-1) as 截代号方法1,
  3. MID(代号,1,INSTR(代号,"-")-1) as 截代号方法2,
  4. 代号,
  5. 所属
  6. FROM [Sheet1$A1:B4]
复制代码


截取指定字段指定字符窜.rar

10.2 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-12 10:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

问题解决,学习了。太好了,非常感谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-14 17:15 | 显示全部楼层

可能钻牛角尖了。如果想截取后换成另外一个字符,不知能否处理。
比如想将第一条数据XY-104059-35中的XY换成AB,输出成AB-104059-35、123-602JK-01输出成CD-602JK-01、7-001AD-YY输出成DE-001AD-YY  .请赐教。

TA的精华主题

TA的得分主题

发表于 2023-6-15 08:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册




sql.jpg


  1. SELECT
  2. 代号,
  3. 所属,
  4. LEFT(代号,INSTR(代号,"-")-1) as 截代号方法1,
  5. MID(代号,1,INSTR(代号,"-")-1) as 截代号方法2,
  6. MID(代号,INSTR(代号,"-")) as 截右方法,
  7. IIF(MID(代号,1,INSTR(代号,"-")-1) = "XY","AB"&MID(代号,INSTR(代号,"-")),
  8.      IIF(MID(代号,1,INSTR(代号,"-")-1) = "123","CD"&MID(代号,INSTR(代号,"-")),
  9.           IIF(MID(代号,1,INSTR(代号,"-")-1) = "7","DE"&MID(代号,INSTR(代号,"-")),MID(代号,1,INSTR(代号,"-")-1)))) AS 替换后代码
  10. FROM [Sheet1$A1:B4]
复制代码


截取指定字段指定字符窜.rar

10.76 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2023-6-15 13:10 | 显示全部楼层
学习了!instr函数为字符查找函数,其功能是查找一个字符串在另一个字符串中首次出现的位置。instr函数在Oracle/PLSQL中是返回要截取的字符串在源字符串中的位置。
1 select instr('helloworld','l') from dual; --返回结果:3    默认第一次出现“l”的位置
2 select instr('helloworld','lo') from dual; --返回结果:4    即:在“lo”中,“l”开始出现的位置
3 select instr('helloworld','wo') from dual; --返回结果:6    即“w”开始出现的位置

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-15 20:43 | 显示全部楼层

太强大了,ExcelSQL在哪里可以系统学的?好想系统学习啊。
有个疑问、用了IIF截取并替换相关字符,这点没问题。
但IIF里没有设定的(比如XY→AB、123→CD、7→DE以外的)为何只是显示截取那部分,而没能显示条字符串?
如果想要:在IIF里有设定的就按设定的替换,而没有设定的就显示原字符串,不知该如何修改呢?请再赐教?
     1. XY-104059-35     IFF里有设定XY→AB   其结果为AB-104059-35  OK   
     2. XX-104059-35     IFF里没设定XX→      当前结果为XX                NG
                                                                想得到的结果为原字符串 XX-104059-35

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-15 20:51 | 显示全部楼层
锄禾日当午 发表于 2023-6-15 20:43
太强大了,ExcelSQL在哪里可以系统学的?好想系统学习啊。
有个疑问、用了IIF截取并替换相关字符,这点 ...

看懂了IIF语句了,在IIF里没有预设的想显示原字符串,就将,MID(代号,1,INSTR(代号,"-")-1)这一段改为 代号就行了。问题解决了,非常感谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-16 15:07 | 显示全部楼层

还有个问题、请再赐教
    一堆数据里只想找到符合要求的数据。
    比如截取号与工作表一致,且数量大于1000的数。想这样ExcelSQL该如何表达?
    可能说的不清楚,具体请看附件!

截取指定字段指定字符窜3.zip (12.25 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

发表于 2023-6-16 15:20 | 显示全部楼层
SELECT  LEFT(代号,INSTR(代号,"-")-1) as 截代号方法1, mid(代号,1,INSTR(代号,"-")-1) as 截代号方法2,  代号,  所属,数量  FROM [Sheet1$A1:C4] where 数量 >1000

截取指定字段指定字符窜3.zip

15.2 KB, 下载次数: 11

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 05:31 , Processed in 0.035570 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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