Teradata在SQL中实现字符串替换

导出接口数据时采用分隔符是比较方便的,用2个字符会比用1个字符更好的规避数据质量问题,今天接数的同事说那边只能支持1个字符分隔。替他着想,选择|作为分隔符,然后再把高危字段执行|替换为空格的逻辑。郁闷的事情来了,居然没找到Teradata中有replace,唉~

我的办法是先找到|所在的位置(没找到就是0),然后从中间劈开,接上空格,就是下面这个公式,其中<fieldname>就是字段名了:

substr(<fieldname>,0,index(<fieldname>,'|')) || ' ' || substr(<fieldname>,index(<fieldname>,'|')+1)
这一办法也适合用于长度大于1的字符串替换,须注意后面就不是+1,而是+length了。

接下去又有新的麻烦了。“東”这个字里面居然有“|”?继续查一下啊,“弢”、“珅”、“韡”这几个字里面也有“|”,嗯,看来“|”是不能用了。老实说,问题的根源还是在对方只支持单个字符作为分隔符(这件事情相当奇怪啊,2013年了居然还有这样的事情?)

咋办呢?技术上肯定是说服对方采用双字符分隔符最好,但是问题是企业内部的精神是业务为导向,容不下技术上追求完美的行为呢。

咋办呢?拼概率吧。嗯,换了个字符“!”,查看一个月内的数据,不会出异常哦。当然了,脏数据里面还是会有“!”这个符号的,既然是脏数据,再脏一些也无所谓了,“!”替换为空格也没啥风险,是吧?

好了,这个问题到此为止。最佳的解决办法仍然是双字符分隔,但是用“!”分隔并且做一些技术性处理,风险也能接受。最后,还是要尝试去说服对方接受双字符分隔,实在是谈不下来,只好埋下一颗“!”地雷并预祝对方值班人员好运了~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值