首页 > 解决方案 > 使用字符位置向后搜索以查找子字符串的位置

问题描述

您好,我是 Pyspark 的新手。我正在尝试在 Pyspark 中做类似的事情。

甲骨文:INSTR('Corporate Floor','or', -3, 2) 结果:2

[函数从最后一个字符倒数到倒数第三个字符,也就是“Floor”中的第一个“o”。然后,该函数向后搜索“or”的第二次出现,并发现第二次出现以搜索字符串中的第二个字符开头。]

但不断出错,因为 Instr 在 Pyspark 中只有 2 个参数。

提前致谢。

标签: mysqlpyspark-sql

解决方案


您需要结合substringinstr完成此任务。

df = spark.createDataFrame([('Corporate Floor',)],
                           'item : string')

df.selectExpr("item",
              "substring(item,length(item)-2) AS search_item",
              "instr(substring(item,length(item)-2),'or') AS search_loc").show()

#+---------------+-----------+----------+
#|           item|search_item|search_loc|
#+---------------+-----------+----------+
#|Corporate Floor|        oor|         2|
#+---------------+-----------+----------+

推荐阅读