• Impala中replace和translate的用法和区别


    说到字符串替换功能函数,大家都会不约而同地想到 replace 函数,毕竟 replace 函数在各种语言中都是由应用,且比较容易理解;在Impala中,还有一个字符串替换函数 translate,也可以用于做函数替换,只是用法上有一些区别,有些场景下比replace更好用,有些场景下只能用replace

    replace 函数与 translate 函数都是可以用来做字符串替换的,功能比较相似,但又有所区别:、

    replace 是对整个字符替换为指定的字符,强调一整个替换字符;

    translate 是将逐个位置的字符对应替换成对应位置的字符,强调逐个字符进行对应替换;

    所以,在单个字符替换的场景下,其实 repalce 和 translate 的效果是一样的;在多个字符的替换的场景下,二者又是有所区别的

    函数区别说明单纯用文字可能不好理解,我们先说明一下各自的用法:

    序号

    语法类型/方法名称

    输出类型

    使用说明

    1

    replace(str, 'ab', 'cd')

    str

    将str中所有整串的 'ab',替换为整串的 'cd'

    2

    replace(str, 'ab', 'cd')

    str

    将str中所有的 'a' 替换为 'c',所有的 'b'替换为 'd',不考虑是否相连

    有了上面的用法说明,相信大家就有点眉目了,那我们就来一起蠢蠢欲试吧,用几个示例来看看 replace 和 translate 的实际区别

    1. -- replace替换整串的字符
    2. select replace('hello world','wo','ni')
    3. -- 输出:hello nirld
    4. -- translate逐个替换字符
    5. select translate('hello world','wo','ni')
    6. -- 输出:helli nirld
    7. -- translate逐个替换字符,函数右侧替换个数不匹配,则用空串补充
    8. select translate('hello world','wo','n')
    9. -- 输出:hell nrld
    10. select translate('hello world','w','ni')
    11. -- 输出:hello norld

    上面的示例很明显,replace 是进行整串字符串的替换,如果是单个字符的替换,那么 replace 和 translate 的效果是一致的;如果是多个字符的替换,那么二者的效果根据不同情况,会有不同;

    如下标红所示,就是区别点:

    需求 SQL输出结果

    单个字符替换

    select replace('hello world','l','L') heLLo worLd
    select translate('hello world','l','L')
    多个字符替换

     select replace('hello world','or','OR')

    hello wORld
    select translate('hello world','or','OR')hellO wORld

    那么,在单个字符替换的场景下,如果我们需要进行多次单个字符替换,即多层replace 嵌套的时候,我们可以用translate 来解决我们的需求,避免多层嵌套,降低解读成本,简化代码量;当然,如果是多个字符替换的场景下,依然要用replace 来完成需求,即使需要多层嵌套

    以上就是 Impala 中 replace 函数和 translate 函数的用法和区别,大家在实际项目中,可以根据场景自行选择适合的函数进行使用,希望对大家有帮助

  • 相关阅读:
    【数据结构取经之路】建堆&堆排序
    基于RabbitMQ的模拟消息队列之四——内存管理
    大数据之LibrA数据库系统概览
    02、Spring中的Bean实例化、作用域、生命周期及装配方式介绍
    国内外传输大文件有哪些好用又便宜的文件传输工具?
    k8s--基础--30.1--Tekton--介绍和按照
    后缀表达式的计算【C语言】【数据结构】
    java包以及权限修饰符
    【Python】-- 元组、字符串常用方法、序列切片
    FigDraw 17. SCI 文章绘图之主成分绘图(pca3d)
  • 原文地址:https://blog.csdn.net/wang1qqqq/article/details/127870928