sql截取某个字段字符串后几位_Kettle组件一:如何根据指定符号拆分字符串?

最近经常有同事问我字符串处理相关的问题,这些问题在主流的关系型数据库中处理起来都非常简单,今天就被问到一个问题:如何截取某个字符串字段中第一个逗号之前的数据?比如截取字符串“aaa,bbb,ccc”中第一个逗号前的字符串“aaa”,在Oracle数据库中可以这么处理:
select regexp_substr('aaa,bbb,ccc','[^,]+',1,1)from dual;
也可以这么实现:
select  substr('aaa,bbb,ccc',0,instr('aaa,bbb,ccc',',')-1) from dual;
在SQL Server数据库中可以这么处理:
select substring('aaa,bbb,ccc',1,charindex(',',' aaa,bbb,ccc')-1)
在MySQL数据库中可以这么处理:
select substring('aaa,bbb,ccc',1,instr('aaa,bbb,ccc ', ',')-1);
还可以这么解决:
select substring_index('aaa,bbb,ccc ', ', ',1);
当然,还有很多其他的字符串处理函数,可以解决同样的问题,这里就不一一赘述,但有的非主流数据库对字符串处理支持得还不够到位,比如基于Elasticsearch架构的数据库,这时就需要借助第三方数据处理工具来解决,比如Kettle。今天我就简单讲下如何运用Kettl中的“拆分字段”组件来解决前面提到的问题。为了演示简单,后面的数据输入和输出,都用Excel来实现。首先,通过Excel文件来构建样例数据,样例数据分隔符为逗号“,”。如下图所示: 1483badc671b6fab873897e9aa1fb487.png其次,构建一个数据处理转换,转换包括“Excel输入”、“字段拆分”和“Excel输出”,如下图所示: be4371207a212b3dc3994580b38327d5.png其中“拆分字段”配置如下: f9e4e4a7718a6bdfdabe8f74850a925b.png最后,在“Excel输出”中,配置对应的输出字段,如下所示: 611955649e73b318a1eb6055f1135246.png最后,运行效果如下图所示: d6d65ec3a7da0ca24d8758c707345983.png从运行结果看,已成功将字段中的字符串进行分离,如果要获取第二个或第三个分隔符对应的子字符串,可以在“拆分字段”组件中进行扩展,然后再在后续数据处理中,再进行灵活地组合,以满足不同的业务需求。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值