SparkSQL中REGEXP_INSTR(Redshift函数)的替代品是什么?

时间:2019-10-25 06:18:12

标签: apache-spark apache-spark-sql pyspark-sql

REGEXP_INSTR函数: 在字符串中搜索正则表达式模式,并返回一个整数,该整数指示匹配的子字符串的开始位置或结束位置。如果找不到匹配项,则该函数返回0。

示例:

    select email, regexp_instr(email,'@[^.]*') 
    from users 
    limit 5; 

预期输出:

email                                 | regexp_instr


Cum@accumsan.com                      |            4

lorem.ipsum@Vestibulumante.com        |           12

non.justo.Proin@ametconsectetuer.edu  |           16

1 个答案:

答案 0 :(得分:0)

您可以使用locate功能

scala> df.show(true)
+--------------------+
|               email|
+--------------------+
|    Cum@accumsan.com|
|lorem.ipsum@Vesti...|
|non.justo.Proin@a...|
+--------------------+


scala> df.select(locate("@",'email)).show()
+-------------------+
|locate(@, email, 1)|
+-------------------+
|                  4|
|                 12|
|                 16|
+-------------------+