当前位置:  开发笔记 > 数据库 > 正文

translate和regexp_replace之间的区别

如何解决《translate和regexp_replace之间的区别》经验,为你挑选了1个好方法。

Spark SQL中有什么区别translateregexp_replace功能.

我想替换字符串中的子字符串,整数值和其他数据类型,如布尔值.

例如.

func("hello","e","a") = "hallo"
func(true,true ,false) = false
func(112,112,9) = 9
func(112,115,9) = 112

我应该使用哪一个以及每个人有哪些优点/缺点?



1> user6910411..:

根本不相同:

translate用于将一个字符表逐字转换为另一个字符表.它不关心上下文,它不使用正则表达式,它只考虑手头的字符.从您提供的示例中,唯一适用的情况是单个字母替换:

spark.sql("SELECT TRANSLATE('hello', 'e', 'a')").show()
+----------------------+
|translate(hello, e, a)|
+----------------------+
|                 hallo|
+----------------------+

通常translate对处理无效字符和其他简单清理任务很有用.它编写简单,运行时开销很小:

spark.sql("SELECT TRANSLATE('ed-ba', 'abcde', '12345')").show()

+------------------------------+
|translate(ed-ba, abcde, 12345)|
+------------------------------+
|                         54-21|
+------------------------------+

regexp_replace.这正是它所说的.您可以使用完整的Java regexp机器.如果要替换字符串中的子字符串,那么这就是您要查找的字符串.

None适用于替换整个整数值和其他数据类型,如boolean.为此用途CASE ... WHEN ... OTHERWISE

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有